Add AboveTranscript render site for mods (fixed panel above the scrolling transcript)

Status Open
Maintainer reply None cached
Activity 0 comments · opened Oct 7, 2026

Summary

Today a mod can draw a persistent custom interface tree (Box/Text/etc.) in exactly two render sites: Pane and AbovePrompt (per the mods reference). Both sit near the bottom of the terminal, close to the prompt. There's no render site for a small persistent panel pinned above the scrolling transcript, at the top of the screen.

Problem

I built a small personal mod (smart-hud) that shows session-wide status — active MCP/skill connections with live state, model/effort, cost, and context window usage — in the AbovePrompt band. It works well, but conceptually this kind of glanceable dashboard reads more naturally as a fixed header at the top of the screen than as a band squeezed right above where I'm typing. There's currently no API to place it there.

Proposal

Add a new render site, AboveTranscript, mirroring AbovePrompt's design and constraints: a band fixed above the scrolling transcript (instead of above the prompt), raised via the same ui.render event, drawn with the same element set (Box, Text, etc. via $.ui.resolve), and sharing the existing throttled $.ui.invalidate redraw model.

Related issues

These circle the same general area (more room/placement flexibility for mods) without asking for exactly this:

  • #99404 — let plugins choose pane placement (inline vs dock) and frame style
  • #99449 — fixed, independently scrolling/resizable regions inside a mod pane (Desktop)
  • #91870 — general "make mods more extensible" wishlist
  • #40780 (closed, pre-dates the mod system) — sticky/pinned header request

Alternatives considered

  • Header / SessionHeader — more intuitive name for newcomers, but breaks from the existing positional naming convention (AbovePrompt, ToolUse, ToolGroup).

Happy to discuss naming or scope — posting this mainly so the idea is tracked, since I couldn't find an existing issue asking for it specifically.

🤖 Generated with Claude Code

View original on GitHub ↗