Skip to content

Commit c2f11c6

Browse files
committed
fix(app): cap terminal inline image previews
1 parent 21f42cc commit c2f11c6

4 files changed

Lines changed: 14 additions & 6 deletions

File tree

956 Bytes
Loading
9.42 KB
Loading

packages/app/src/web/terminal-inline-images.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ import type { TerminalLifecycleState } from "./terminal-panel-runtime-types.js"
66
import type { ActiveTerminalSession } from "./terminal.js"
77

88
export const terminalInlineImagePreviewLimit = 20
9-
export const terminalInlineImagePreviewRows = 7
9+
export const terminalInlineImagePreviewRows = 4
1010

1111
export const terminalInlineImageSpacer = "\r\n".repeat(terminalInlineImagePreviewRows)
1212

13-
const terminalInlineImagePreviewColumns = 28
13+
const terminalInlineImagePreviewColumns = 16
14+
const terminalInlineImagePreviewHeightPx = 56
15+
const terminalInlineImagePreviewWidthPx = 96
1416

1517
type TerminalInlineImageEntry = {
1618
readonly fetchUrl: string
@@ -56,21 +58,21 @@ const renderInlineImageElement = (
5658
link.style.boxSizing = "border-box"
5759
link.style.cursor = "pointer"
5860
link.style.display = "inline-flex"
59-
link.style.height = "calc(100% - 8px)"
61+
link.style.height = `min(${terminalInlineImagePreviewHeightPx}px, calc(100% - 8px))`
6062
link.style.justifyContent = "center"
6163
link.style.margin = "4px 0"
6264
link.style.padding = "4px"
6365
link.style.pointerEvents = "auto"
64-
link.style.width = "100%"
66+
link.style.width = `min(${terminalInlineImagePreviewWidthPx}px, 100%)`
6567

6668
const image = document.createElement("img")
6769
image.alt = entry.path
6870
image.src = entry.fetchUrl
6971
image.style.borderRadius = "4px"
7072
image.style.display = "block"
71-
image.style.maxHeight = "100%"
72-
image.style.maxWidth = "100%"
73+
image.style.height = "100%"
7374
image.style.objectFit = "contain"
75+
image.style.width = "100%"
7476

7577
link.append(image)
7678
element.dataset["path"] = entry.path

packages/app/tests/docker-git/terminal-inline-images-core.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { describe, expect, it } from "@effect/vitest"
22

33
import { splitTerminalInlineImageOutput } from "../../src/web/terminal-inline-images-core.js"
4+
import { terminalInlineImagePreviewRows, terminalInlineImageSpacer } from "../../src/web/terminal-inline-images.js"
45

56
describe("terminal inline image output", () => {
67
it("keeps prompt output after a completed image path line in a later segment", () => {
@@ -27,4 +28,9 @@ describe("terminal inline image output", () => {
2728
}
2829
])
2930
})
31+
32+
it("keeps inline image previews compact in the terminal output stream", () => {
33+
expect(terminalInlineImagePreviewRows).toBe(4)
34+
expect(terminalInlineImageSpacer).toBe("\r\n\r\n\r\n\r\n")
35+
})
3036
})

0 commit comments

Comments
 (0)