Hyper terminal (powered by xterm.js) sends the same byte (\r, carriage return) for both Enter and Shift+Enter. This means Shift+Enter can't insert a newline in Claude Code's multi-line input - it just submits instead.
Other terminals like iTerm2, Kitty, Ghostty, and Alacritty either handle this natively or have simple config options. Hyper doesn't, but a small local plugin fixes it.