IRC Client Library 7.3.0 released!

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

It sure has been a while! I am excited to say that I'm pretty sure I resolved the quirky reconnection issue that would happen in very specific cases of interrupted connectivity.

I am pushing 7.3.0 now because of this, with a plan for 7.4.0 sooner than the previous gap. The next release should include standard replies, setname, and labeled-response support.


  • Fixed issues with the client reconnection failing under certain circumstances.
  • Added new builder method port(int, SecurityType) which combines changing server port and plaintext/TLS.
    • Deprecated port(int) and secure(boolean) for removal in 8.0.0.
  • Twitch changes:
    • Added login and msg-param-cumulative-months tags.
    • Thank you boostchicken for this work
  • Updated to latest Netty (4.1.51).

IRC Client Library 7.2.2 released!

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


  • Fixed bug where nickname changes did not provide the actual updated user/nick.
  • Fixed bug where the input processor labeled the client name as null.
  • Rearranged some listening code for better readability.

IRC Client Library 7.2.0 released!

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


  • Added explicit support for newly-ratified Message IDs.
    • New MessageTag.MsgId class with default implementation with equals and hashCode that compare the ID as well as a non-Optional getter for the ID.
  • Fixed bug in which ChannelJoinEvent did not have realname or account when it could.
  • Fixed bug where ClientConnectionFailedEvent wouldn't fire for TLS failures (e.g. expired cert). The event now fires and contains the getCause().
  • Updated documentation on TLS stuffs.
    • Removed the deprecated-then-removed AcceptingTrustManagerFactory.
    • Added some advice on TLS-related exceptions.
    • Removed references to StartCom from TLS import documentation and replaced with advice for self-signed.

IRC Client Library 7.1.0 released!

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


  • ChannelTopicEvent now has getters for the old and new topic.
    • The previous getTopic() method has been deprecated, as has the old constructor which won't properly support the new methods.
  • Added support for ISUPPORT parameter MAXLIST.
    • Includes multiple getters for making life easier.

IRC Client Library 7.0.0 released!

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

Wait didn't 5.0.0 just come out three months ago?

It sure did! Some more breaking changes were necessary to make coding easier for Twitch users.

Support for 5.1.x and 6.0.x

Both of these will receive fixes through June solstice. The breaking changes in these releases haven't been that big.

New things

  • Message Tags!
    • Commands now can be sent with message tags.
    • Added new commands for sending messages (PRIVMSG, NOTICE, TAGMSG) to take advantage of tags support.
    • Message tags can now be acquired via event.getTag() or getTags() for most events.
  • Custom channel/user modes can be added to ServerInfo, for servers that don't list all their modes.
  • ISUPPORT gets some love:
    • New ISupportParameterEvent for each ISUPPORT parameter acquired.
    • Added new ISUPPORT interfaces:
    • From the modern IRC docs this only means two remain
      • MAXLIST and TARGMAX.
      • Click the above to go to the relevant issues for input on how to best support them.
    • Every ISUPPORT parameter continues to be supported, just without convenience interfaces/methods.

Breaking changes

  • Sanity's notNull verifier now takes the possibly-null object name as the second parameter instead of the message to send.
  • Renamed getOriginalMessage() and getOriginalMessages() to getSource() to be more clear about what they are.
  • Batch and Connection events are moved to their own package.
  • Events are now by default containing a single source message, since most events are really triggered by such.
    • This allows for making message tags more accessible for most events.
    • The handful of events that come from multiple messages are now treated separately for storing source messages.