summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDaniel Polito <[email protected]>2026-01-11 17:12:52 -0300
committerGitHub <[email protected]>2026-01-11 14:12:52 -0600
commit025ed04da0aed68a17c47f7a814068c97767a361 (patch)
treef0d84540bebd382fd1bd41bd8a6e213a9c28a089
parentb81eca4ebc73279ab2c16fb1ca3291449501729d (diff)
downloadopencode-025ed04da0aed68a17c47f7a814068c97767a361.tar.gz
opencode-025ed04da0aed68a17c47f7a814068c97767a361.zip
feat(desktop): Image Preview support for Image Attachments (#7841)
-rw-r--r--packages/app/src/components/prompt-input.tsx6
-rw-r--r--packages/ui/src/components/message-part.css4
-rw-r--r--packages/ui/src/components/message-part.tsx1
3 files changed, 5 insertions, 6 deletions
diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx
index 97f54da5e..13f2b00a3 100644
--- a/packages/app/src/components/prompt-input.tsx
+++ b/packages/app/src/components/prompt-input.tsx
@@ -38,6 +38,7 @@ import { IconButton } from "@opencode-ai/ui/icon-button"
import { Select } from "@opencode-ai/ui/select"
import { getDirectory, getFilename } from "@opencode-ai/util/path"
import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { ImagePreview } from "@opencode-ai/ui/image-preview"
import { ModelSelectorPopover } from "@/components/dialog-select-model"
import { DialogSelectModelUnpaid } from "@/components/dialog-select-model-unpaid"
import { useProviders } from "@/hooks/use-providers"
@@ -1484,7 +1485,10 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
<img
src={attachment.dataUrl}
alt={attachment.filename}
- class="size-16 rounded-md object-cover border border-border-base"
+ class="size-16 rounded-md object-cover border border-border-base hover:border-border-strong-base transition-colors"
+ onClick={() =>
+ dialog.show(() => <ImagePreview src={attachment.dataUrl} alt={attachment.filename} />)
+ }
/>
</Show>
<button
diff --git a/packages/ui/src/components/message-part.css b/packages/ui/src/components/message-part.css
index 3cdd93cb9..b087b59e1 100644
--- a/packages/ui/src/components/message-part.css
+++ b/packages/ui/src/components/message-part.css
@@ -40,10 +40,6 @@
border-color: var(--border-strong-base);
}
- &[data-clickable="true"] {
- cursor: pointer;
- }
-
&[data-type="image"] {
width: 48px;
height: 48px;
diff --git a/packages/ui/src/components/message-part.tsx b/packages/ui/src/components/message-part.tsx
index 644690ed2..71ff37161 100644
--- a/packages/ui/src/components/message-part.tsx
+++ b/packages/ui/src/components/message-part.tsx
@@ -327,7 +327,6 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
<div
data-slot="user-message-attachment"
data-type={file.mime.startsWith("image/") ? "image" : "file"}
- data-clickable={file.mime.startsWith("image/") && !!file.url}
onClick={() => {
if (file.mime.startsWith("image/") && file.url) {
openImagePreview(file.url, file.filename)