Skip to content

Fix: show the splash image on Ghostty over SSH#9

Merged
kinncj merged 1 commit into
mainfrom
fix/ghostty-linux-image
Jul 3, 2026
Merged

Fix: show the splash image on Ghostty over SSH#9
kinncj merged 1 commit into
mainfrom
fix/ghostty-linux-image

Conversation

@kinncj

@kinncj kinncj commented Jul 3, 2026

Copy link
Copy Markdown
Owner

Symptom

heimdall-dashboard shows the ASCII splash instead of the inline logo when run over
SSH from Ghostty
(e.g. Mac Ghostty → Linux workstation). Locally on macOS Ghostty the
image renders fine — same terminal, different result.

Root cause

Image detection delegates to rasterm.IsKittyCapable() (v1.1.2), which recognises
Ghostty only via TERM_PROGRAM == "ghostty". SSH and tmux do not forward
TERM_PROGRAM (rasterm's own comment notes this), while TERM=xterm-ghostty — set by
Ghostty's terminfo — is forwarded. So over SSH the check fails and we fall back to
ASCII, even though the controlling terminal can render Kitty graphics.

Fix

splash.go now treats TERM=xterm-ghostty as Kitty-graphics-capable in addition to
rasterm's checks. One helper, used where IsKittyCapable() was called directly. The
existing TERM_PROGRAM=ghostty (local macOS) path is unchanged.

Tests

  • TestKittyCapableDetectsGhosttyByTERM — TERM=xterm-ghostty with no TERM_PROGRAM/
    KITTY_WINDOW_ID (the SSH case) is capable; case/whitespace tolerant; a plain
    xterm-256color is not.
  • TestKittyCapableKeepsTermProgramPath — the local macOS path still works.
  • Full suite green (305 tests).

Copilot AI review requested due to automatic review settings July 3, 2026 14:34
@kinncj kinncj merged commit 63527c1 into main Jul 3, 2026
13 checks passed
@kinncj kinncj deleted the fix/ghostty-linux-image branch July 3, 2026 14:35

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes terminal image-capability detection so heimdall-dashboard can render the inline splash logo when run over SSH from Ghostty (where TERM_PROGRAM is not forwarded), instead of falling back to ASCII.

Changes:

  • Add a kittyCapable() helper that treats TERM=xterm-ghostty as Kitty-graphics-capable, falling back to rasterm.IsKittyCapable() otherwise.
  • Switch the splash renderer’s Kitty branch to use kittyCapable() instead of calling rasterm.IsKittyCapable() directly.
  • Add unit tests covering Ghostty-over-SSH detection and ensuring the existing TERM_PROGRAM=ghostty path still works.
  • Document the fix in the changelog.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
CHANGELOG.md Notes the Ghostty-over-SSH splash image fix and explains the detection change.
app/internal/tui/splash/splash.go Introduces kittyCapable() and uses it to select Kitty image rendering when TERM=xterm-ghostty.
app/internal/tui/splash/splash_test.go Adds tests for the SSH TERM-based Ghostty detection and the existing TERM_PROGRAM path.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants