Files
l0ng-ai 5c92972f11 feat(terminal): lay the composer over the agent's own input, with its toolbar
The composer now stands in for the agent's input instead of sitting under
it, so the pane has one input rather than two.

- For Claude Code, Codex and Gemini the box is laid over the input area it
  finds on the grid (Claude's ruled prompt block and the status rows under it,
  Codex's `›` line, Gemini's framed prompt), painted in the grid's background.
  When the agent puts something else there — a permission prompt, a picker —
  the area stops reading as an input; after a 250ms grace the box steps aside
  and the keyboard goes to the TUI, and both come back with the input. Other
  agents keep the docked layout.
- Over the input, Esc is the agent's (it interrupts), Ctrl+C clears the box or
  reaches the agent when the box is empty, and text typed at the grid lands in
  the box.
- The toolbar: permission mode (read off the status row the box covers, falling
  back to the hooks' permission_mode; click or Shift+Tab to cycle), model
  (click opens Claude's picker), Think (Claude's thinking toggle), and a context
  ring. Labels come only from what the agent reported.
- Claude hooks now carry an AgentReadout — permission_mode from the hook
  payload, the model and context size of the last main-thread reply from the
  transcript, the context window (1M for a [1m] model or past 200k), and
  alwaysThinkingEnabled — worked out in the hook so remote panes get it too.
- Visual pass against the design: 13.5px text with the design's padding
  (the input's own padding subtracted), a 40px toolbar of 28px buttons, a dark
  round send button, image chips with their own glyph.
2026-10-01 15:27:59 +08:00
..