Reduces unread status changes to publish to the eventbus
at most once every 200ms per window. These events are
handled synchronously on the EDT so cause massive
performance issues.
When connecting to several bouncers with huge backbuffers
this makes the client usable in seconds rather than tens of minutes.
Internally this uses RX to handle the throttling, because it's
super easy. We might eventually want to expose that externally
instead of using an event bus, but I'm not sure.
Fix handling of special chars in passwords when using /newserver.
Because of the weird string->URI parts->URI conversion we do,
we have to manually decode special entities when converting
them into URI parts. (Otherwise the URI constructor encodes
them a second time)
This will replace the two or three kludgy methods in CertificateManager
that currently validate hostnames. In the process it fixes some fun
problems that could arise if the subject of a certificate contained
regex quote sequences (\Q...\E).
Issue #806
When the user manually trusts a certificate, we should be storing
the whole cert instead of just an encoding of its fingerprint.
This allows us to display it properly, chain other certs trusted
by it, and generally do everything more sanely.
Baby step for issue #806
Allow specifying a window for DisplayableEvents in format.yml (Issue #459)
I'm sure this will be changed/redone, but this is at least a start by allowing
certain events to go to all windows (eg ServerNotices)
Ideally it would be possible for some events to only be displayed in the window
that generated them (eg if I do /notice foo bar the ">-{{target}}-> {{message}}"
message only appears in the window I ran the command in, not either just the
server window or all the windows, but this would need changes to a bunch of
events to make them include a source window.
Apply object display properties when formatting events.
If an object in a formatter tag ({{foo.bar.baz}}) is Displayable,
then we will modify the output based on its display properties.
Currently only supports user links and foreground colours.
This also changes the internal format of nickname links to be
`\u16<nick to link to>\u16<text to show>\u16`, allowing the
link and text to differ. This means if you formatted users
by showing their realname, you could still click them to
open a query.
Closes #424
Closes DMDirc/Plugins#507