IRC Client Library 5.0.0 released!

Version 5.0.0 of the Kitteh IRC Client Library has been released!

It's time for the next major release!

Client builder rework

The Client builder has had a lot of methods renamed and shifted into subclasses to allow for a clearer flow of information. You'll want to take a look at the javadocs, but it is mostly straightforward. Below is an example of updated simple building code:

Client client = Client.builder().nick("Kitteh").server().host("127.0.0.1").then().buildAndConnect();

Authentication refactor

The authentication classes saw a light rearrange. If you use NickServ authentication you'll need to make some changes in your code. Check the javadocs for more information. These changes will allow for easier future improvements.

Improved DNS resolution

Improved DNS handling is planned for a future release and the breaking change necessary has been made in 5.0.0 to ensure this can happen before the next major release. Some InetSocketAddress API has been replaced with a resolution-free HostWithPort class.

Proxy support

You can now connect over a SOCKS proxy! See the proxy() section of the builder to set that up.

Separation of listeners

KICL's default listeners (used to power the library) have been split up into lots of little listeners that largely accomplish one goal each. This way, it is easier to swap out a single listener if you wish to modify how KICL processes a message. You can modify this even in the builder, preventing construction, should you wish. Check out DefaultListeners for the list of listeners registered. KICL's Twitch code takes advantage of the listener separation to unregister the listener for one of the earliest messages a server sends on connection, because Twitch's IRC servers send a different message.

Twitch changes

Now you can simply call one method to apply Twitch support to your Client. TwitchSupport.addSupport() will add the Twitch-specific listener mentioned above, add a second Twitch listener for a variety of Twitch-related events, register the capabilities and message tags, and disables querying for channel information that Twitch doesn't support. Call the method before you connect the Client, and you're all set!

In addition, support for the Twitch whisper event has been added.

Other

Thanks

I wish to thank the following contributors for their work on this release: