-
Notifications
You must be signed in to change notification settings - Fork 3.2k
fix(vscode): open sent-message images in an editor tab #13683
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
johnnyeric
merged 2 commits into
Kilo-Org:main
from
sylwester-liljegren:fix/user-message-image-preview-tab
Sep 3, 2026
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "kilo-code": patch | ||
| --- | ||
|
|
||
| Open images attached to sent chat messages in an editor tab preview instead of a modal, matching the behavior of images attached in the prompt input. |
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| /** | ||
| * The exact shape of data URL the host can turn into a file on disk (see | ||
| * `parseImage` in ../image-preview.ts). Shared with the webview so a click | ||
| * is only routed to the host preview when the host can actually decode it — | ||
| * otherwise the webview keeps its own modal fallback. | ||
| */ | ||
| const PATTERN = /^data:(image\/[A-Za-z0-9.+-]+);base64,/ | ||
|
|
||
| export function imageMime(url: string): string | undefined { | ||
| return url.match(PATTERN)?.[1] | ||
| } |
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
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
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This may cause a regression with certain
data:URLs: we suppress the modal, but the host can't decode the image, so neither preview opens. Here we should keep the modal fallback for URLs the host doesn't support.Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch — fixed in 7aff213. The guard was too broad:
startsWith("data:")claimed URLs that the host'sparseImagerejects (non-base64 data URLs, non-image mime types), so the modal was suppressed and nothing opened at all.I pulled the host's accept rule into
src/shared/image-data-url.tsand now use it on both sides:parseImagematches against it, and the webview only claims the click whenimageMime(dataUrl)is truthy. Everything else falls through to the modal as before.Sharing one matcher instead of duplicating the check keeps the two sides from drifting apart later.
tests/unit/image-preview.test.tsnow asserts thatimageMimeaccepts exactly the URLsparseImagecan decode, so a future change to one without the other fails the test.