Files
tty7/src
l0ng-aiandl0ng-ai 54825d3275 feat(terminal): multi-line prompt editor + I-beam mouse pointer (#80)
* feat(terminal): multi-line command editor at the prompt

The inline prompt editor was single-line: a pasted multi-line command kept
its newlines inline but rendered them as blank cells in one flex-wrapped row,
flattening the command into a ragged blob with the original indentation left
as runs of spaces.

Make the editor genuinely line-aware:
- render_input_bar splits the buffer on '\n' and stacks each logical line as
  its own flex-wrap row, so newlines become real breaks (soft-wrap within a
  line is unchanged); ghost autosuggestion is suppressed for multi-line input.
- submit replays each embedded newline as an Enter so the shell's own line
  editor assembles the command (backslash / open-quote continuation, PS2).
- up/down move the caret between visual rows with a sticky goal column,
  falling through to history recall only from the top/bottom row.
- Home/End (Ctrl-A/E) act within the current logical line.
- click mapping treats '\n' as a hard break (past a line's content snaps to
  its end, not onto the next line).
- Shift+Enter / Opt+Enter insert a newline to author multi-line commands.

Adds tests for logical-line Home/End and newline-aware click mapping.

* fix(terminal): I-beam mouse pointer over selectable text

The surface only set a pointer style (PointingHand) over hovered links, so
everywhere else the OS default arrow showed over the terminal text. Default
to an I-beam over the text like every other terminal, keep the pointing hand
for links, and leave the arrow only once a program takes over mouse reporting
(matching Terminal.app / iTerm).

* style: cargo fmt

---------

Co-authored-by: l0ng-ai <24760907+l0ng-ai@users.noreply.github.com>
2026-07-14 17:53:38 +08:00
..