diff --git a/desktop/src/components/chat/InlineImageGallery.test.tsx b/desktop/src/components/chat/InlineImageGallery.test.tsx index 7862c0d7..18101f14 100644 --- a/desktop/src/components/chat/InlineImageGallery.test.tsx +++ b/desktop/src/components/chat/InlineImageGallery.test.tsx @@ -64,6 +64,26 @@ describe('InlineImageGallery', () => { ]) }) + it('scopes image hover overlays to each image tile', () => { + render( +
+ +
, + ) + + const firstTile = screen.getByRole('button', { name: /photo\.png/i }) + expect(firstTile).toHaveClass('group/image') + expect(firstTile).not.toHaveClass('group') + + const overlay = firstTile.querySelector('.group-hover\\/image\\:opacity-100') + expect(overlay).not.toBeNull() + expect(firstTile.querySelector('.group-hover\\:opacity-100')).toBeNull() + }) + it('does not render an in-workspace absolute path twice (dedup by basename)', () => { // The absolute path is INSIDE workDir, so extractAssistantOutputTargets also // surfaces it as a relative target (frame.png). It must only render once. diff --git a/desktop/src/components/chat/InlineImageGallery.tsx b/desktop/src/components/chat/InlineImageGallery.tsx index 104d5c6f..44427029 100644 --- a/desktop/src/components/chat/InlineImageGallery.tsx +++ b/desktop/src/components/chat/InlineImageGallery.tsx @@ -114,7 +114,7 @@ export function InlineImageGallery({ text, sessionId, workDir }: Props) { key={img.src} type="button" onClick={() => setActiveIndex(i)} - className="group relative overflow-hidden rounded-xl border border-[var(--color-border)] bg-[var(--color-surface-container-low)] text-left shadow-sm transition-all hover:shadow-md hover:border-[var(--color-brand)]/40" + className="group/image relative overflow-hidden rounded-xl border border-[var(--color-border)] bg-[var(--color-surface-container-low)] text-left shadow-sm transition-all hover:shadow-md hover:border-[var(--color-brand)]/40" > -
+
fullscreen