Include and render identities associated with requests, channels, and
login sessions. Provide the ability to kick identities and their
sessions, logging them out.
As it turns out, the exact behavior of the 'S' CSI command is not "move
contents up into scrollback", but rather "delete the top line(s), move other
contents up". This behavior leads webterm to eat into outputs whenever it
renders slogs.
Xterm(.js), when given a newline character at the bottom of a scroll region,
does produce the desired behavior of bumping the top line away into scrollback,
instead of obliterating it.
This implementation now diverges from vere's, which is unfortunate, but the
alternative is making webterm track the contents of the bottom-most line of
the default session, which seems rather ridiculous by comparison.
Fixes#6257.
Any change to the session object was triggering this. But that now includes
an "unacked keystrokes" counter, which updates frequently, and we
definitely don't want to send resize notifications in that case.
xterm.js seems to have a bug where it doesn't register ctrl+uppercase
keypresses correctly. To work around this, we catch such keypresses
explicitly and handle them inline.
Includes patched versions of ames' and clay's +load arms.
In clay, we do a dumb ;; hack to get the state to adapt properly. This
shouldn't be needed ($case had an extra... case added to it, old ones
should still nest), and so we should revisit the logic there to make it
cleaner/better before release.
Flashes areas of the screen that get redrawn by blits a bright pink.
Doesn't behave quite right in some scenarios (where the first blit isn't
a cursor movement, or there is a %nel at the end of the buffer), but
works sufficiently for the common cases.
%txt should be reserved for chunks of pasted text and other
non-keystroke text inputs. Perhaps at a later point in time we'll handle
paste events explicitly, letting this be more accurate.