The new filter comes with these enhancements:
- Processing is rune-wise rather than byte-wise;
it assumes UTF-8 input and single-cell wide characters,
but this condition should be /usually/ satisfied.
- Unprocessed control characters are escaped, `cat -v` style.
- A lot of escape sequences is at least recognised, if not processed.
- Rudimentary preparation for efficient dynamic updates
of task views, through Javascript.
We make terminal resets and screen clearing commands
flush all output and assume that the terminal has a new origin
for any later positioning commands.
This appears to work well enough with GRUB, at least.
The filter is now exposed through a command line option.
Errors should be handled a bit more nicely now.
The SFTP part could also be done from deploy scripts like:
scp -i {runner.ssh.identity} \
-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
{runner.ssh.user}@{runner.ssh.address%:*} -p {runner.ssh.address#*:}
but that is deemed way too annoying, so we do it from Go.