Commit Graph

1399 Commits

Author SHA1 Message Date
Přemysl Eric Janouch 6f39aa6615
xP: use the binary protocol for incoming events
And batch event messages together as much as possible.

JSON has proven itself to be really slow
(for example, encoding/json.Marshaler is a slow interface),
and browsers have significant overhead per WS message.

Commands are still sent as JSON, sending them in binary
would be a laborious rewrite without measurable merits.

The xP server now only prints debug output when requested,
because that was another source of major slowdowns.
2022-09-16 00:51:11 +02:00
Přemysl Eric Janouch e87cc90b5e
xP: improve comments in protocol code generator 2022-09-15 05:12:07 +02:00
Přemysl Eric Janouch 98b0a4ef3d
xP: further optimize JSON marshalling 2022-09-15 03:16:16 +02:00
Přemysl Eric Janouch 9cf44aa4dd
xP: speed up log decoding 2022-09-15 02:32:58 +02:00
Přemysl Eric Janouch b53fc1918f
xP: fix log JSON serialization 2022-09-15 01:51:40 +02:00
Přemysl Eric Janouch 92f2f6895b
xP: use buffered reads 2022-09-14 07:11:05 +02:00
Přemysl Eric Janouch c1d2e38840
xP: generate our own JSON marshallers
For non-trivial types, which are expensive to serialize
with encoding/json's struct reflection.
2022-09-14 06:56:36 +02:00
Přemysl Eric Janouch f89f21a47f
xP: pass all events through one handler
This is a mild clean up.
2022-09-14 06:56:36 +02:00
Přemysl Eric Janouch fa85ea8208
xP: parallelize event reception and sending
Still trying to make the frontend load tolerably fast,
still unsuccessfully.
2022-09-14 06:56:36 +02:00
Přemysl Eric Janouch b728235b6c
xP: move to a WebSocket package with compression
Compression happens to be broken in Safari,
though luckily there are friendlier browsers one can use.
2022-09-14 06:56:35 +02:00
Přemysl Eric Janouch d31ab67268
xC: mildly optimize relay traffic 2022-09-14 01:01:19 +02:00
Přemysl Eric Janouch b2b3093e0e
xP: remove debugging protocol logs from JS 2022-09-14 01:01:10 +02:00
Přemysl Eric Janouch a551e911ab
xP: adjust buffer list iteration and styling
M-a and M-! should iterate, rather than keep jumping back
to the same buffers.

The current item wasn't visible enough,
and it jumped around in my 1.5-scale Firefox.
2022-09-13 03:21:41 +02:00
Přemysl Eric Janouch a61789637a
xP: deal with macOS/Blink for good 2022-09-12 16:45:29 +02:00
Přemysl Eric Janouch 8968100a28
xP: improve favicon behaviour
Make it black when disconnected, and orange when the document
is hidden but the current tab is highlighted.
2022-09-12 03:49:29 +02:00
Přemysl Eric Janouch 3b6c29d676
xC: silence some compiler warnings 2022-09-11 22:16:35 +02:00
Přemysl Eric Janouch b4ee523628
xP: bind buffer iteration to M-PageUp/PageDown 2022-09-11 21:50:09 +02:00
Přemysl Eric Janouch c3a52b9e4c
xP: indicate hidden buffer lines 2022-09-11 21:50:09 +02:00
Přemysl Eric Janouch 96fc12bc4c
xC/xP: send buffer type and server state
Also make PM highlighting behaviour consistent.
2022-09-11 21:50:08 +02:00
Přemysl Eric Janouch 1493d9998b
xC: clean up 2022-09-11 19:11:47 +02:00
Přemysl Eric Janouch 36f77e74fb
xP: change the favicon when highlighted 2022-09-11 19:10:41 +02:00
Přemysl Eric Janouch 23deca45c9
xP: fix non-ASCII text completion 2022-09-11 19:10:40 +02:00
Přemysl Eric Janouch 62773acaa0
xP: beep on highlight
800 Hz seems like it could match a POST beep.
2022-09-11 03:42:08 +02:00
Přemysl Eric Janouch 7e3919e25d
xP: add basic buffer input history
Bind M-p and M-n as in xC.

Also make all our bindings reachable on macOS.
2022-09-11 03:10:23 +02:00
Přemysl Eric Janouch 4bc2f736f2
xC: make terminal attributes abstract
And translate them for frontends.

This is very long overdue, and a rather significant cleanup.

Bump liberty.
2022-09-11 01:20:18 +02:00
Přemysl Eric Janouch add670212f
xP: remember buffer input selections 2022-09-11 01:01:53 +02:00
Přemysl Eric Janouch 95aa89ee97
xP: bind M-h to toggle history, and adjust focus 2022-09-10 20:39:03 +02:00
Přemysl Eric Janouch 0bc2c12eec
xP: handle the M-Tab binding from xC 2022-09-10 19:36:49 +02:00
Přemysl Eric Janouch 3330683ad6
xP: handle M-a and M-! bindings from xC 2022-09-10 19:34:01 +02:00
Přemysl Eric Janouch 0015d26dc8
xC/xP: support hiding unimportant messages at all 2022-09-10 19:01:42 +02:00
Přemysl Eric Janouch 7d5e63be1f
xC: deal with so far unexpected multiline messages
And get rid of an outdated unmarked TODO comment.
2022-09-10 18:51:27 +02:00
Přemysl Eric Janouch e7d0f2380e
xC: split Command.BUFFER_INPUT on newlines 2022-09-10 18:51:27 +02:00
Přemysl Eric Janouch 36529a46fd
xP: also scroll to bottom on window resize 2022-09-10 18:10:08 +02:00
Přemysl Eric Janouch 632ac992ab
xC/xP: only send buffer stats in the initial sync
The client and frontends track these separately,
there is no need for hard synchronization.
2022-09-10 17:38:33 +02:00
Přemysl Eric Janouch d29e2cbfe8
xP: detect links in the log 2022-09-10 17:18:22 +02:00
Přemysl Eric Janouch 240fac4d90
xP: only allow vertical textarea resizing 2022-09-10 17:08:14 +02:00
Přemysl Eric Janouch c06894b291
xP: fix command sequence number generation 2022-09-10 17:05:39 +02:00
Přemysl Eric Janouch 9eaf78f823
xP: open links in a new tab/window 2022-09-10 17:05:39 +02:00
Přemysl Eric Janouch 5f02dddd11
xP: advance unread marker when the log is visible 2022-09-10 17:05:39 +02:00
Přemysl Eric Janouch 6f4a3f4657
xP: advance unread marker in an inactive tab 2022-09-10 17:05:39 +02:00
Přemysl Eric Janouch 6387145adc
xP: improve line wrapping 2022-09-10 17:05:38 +02:00
Přemysl Eric Janouch f3cc137342
xC-gen-proto: reduce enums to single bytes
That's already way more than we can possibly use.
2022-09-10 16:06:35 +02:00
Přemysl Eric Janouch 8c8e06b015
xP: enhance mobile experience
The left column used to jump around, and phones were near-unusable.
2022-09-08 17:11:10 +02:00
Přemysl Eric Janouch d7b6967b6f
xP: allow setting a fixed WS URI
For reverse proxies.
2022-09-08 17:11:01 +02:00
Přemysl Eric Janouch 8c3ee80b21
xC/xP: finalize and implement Event.PING 2022-09-08 02:45:37 +02:00
Přemysl Eric Janouch 3a165a595b
xC: use the relay protocol's RPC for pings 2022-09-08 01:48:46 +02:00
Přemysl Eric Janouch 4ba28c6ed3
xC/xP: mark highlights and buffer activity
And more or less finalize out the protocol for this use case.
2022-09-08 01:28:51 +02:00
Přemysl Eric Janouch 45aa0e8dfb
xP: remember to differentiate today 2022-09-07 19:23:47 +02:00
Přemysl Eric Janouch a2d5995cf5
xC: don't autoactivate buffers on forced JOINs 2022-09-07 19:10:49 +02:00
Přemysl Eric Janouch 2075c38fd1
xP: use an industry-standard name for a button 2022-09-07 17:33:38 +02:00