IRC Client Library 5.0.0 released!
01 Jan 2019Version 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
- The JSR305 annotations have been replaced with the Checker Framework. Your IDE should seamlessly handle this.
- Start of Java Platform Module System support with an automatic name in the manifest.
org.kitteh.irc.client.library
- WebIRC support now matches IRCv3 spec and sends the command before capability requesting.
- Also took advantage of the Client builder rework to rename "user" to "gateway" to match the spec.
- The final STS capability is now supported. Draft support remains as well.
- Updated to Netty 4.1.31.
Thanks
I wish to thank the following contributors for their work on this release:
- kashike
- Client builder rework
- Authentication refactor
- JPMS support
- JSR305 to Checker Framework transition
- Bootstrap fix after proxy support was added
- Carsten (MoriTanosuke)
- Addition of SOCKS proxy support
- Tim Hagemann (kumpelblase2)
- Twitch whisper support
- Jos Ahrens (Zarthus)
- Updating the pom to use https links to this site
- Adam Williams (lol768)
- STS final spec testing