IRC Client Library 4.0.1 released!

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

This release fixes a bug in 4.0.0 that prevented reconnection from happening.

IRC Client Library 4.0.0 released!

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

This is a substantial update in a few ways, which will be broken down in various ways below. You really should read the first part of the connectivity rework. Unless you like your client no longer functioning, that is!

Connectivity rework

  • Client builder's build() method no longer automatically connects.
    • Client#connect() starts a connection.
    • Client.Builder#buildAndConnect() available to retain older functionality.
  • Removed Client.Builder#afterBuildConsumer() as it is no longer necessary.
  • ClientConnectedEvent renamed to ClientNegotiationCompleteEvent:
    • This is a more accurate name for what it tells.
  • ClientConnectionEndedEvent covers connections... ending.
    • If not user-initiated shutdown, can modify if a reconnect will be attempted and after what delay the attempt will be made.
    • Sub classes:
    • ClientConnectionClosedEvent for connection closing.
    • ClientConnectionFailedEvent for connection not even succeeding during attempted connection.
  • ClientConnectionEstablishedEvent for when the connection is established and the first messages are about to be sent.
  • Helper ConnectionEvent for all connection-related events.

Un-hiding the implementation

Most of the implementation is now customizable via replacement of individual parts. There are still a few pieces, like connectivity, that will not be swappable until 4.1.0 at the earliest but at this point you should be able to replace any individual part accessible from the builder without interrupting function of any other part.

The following API interfaces have a sub interface that should be implemented by any implementation and allows for management of things that shouldn't be exposed in the main API: CapabilityManager, Client, and ServerInfo.


Many things were renamed for hopefully consistent naming.

  • Any instance in class or method of CTCP renamed to Ctcp.
    • Examples: PrivateCtcpQueryEvent, #sendCtcpMessage().
  • Any instance in class or method of STS renamed to Sts.
    • Examples: StsStorageManager, #getStsMachine().
  • Any instance in class or method of WHOX renamed to WhoX
  • Any instance in class or method of MOTD renamed to Motd.
  • SaslECDSANIST256PChallenge renamed to SaslEcdsaNist256PChallenge.
  • Many Client.Builder methods were renamed:
    • Listeners reordered, such as listenInput() to inputListener().
    • Suppliers renamed, such as eventManagerSupplier() to eventManager().


  • Toggling sending of WHO/MODE on channel join is changed:
    • Now accessible via ActorProvider#setQueryChannelInformation(boolean).
    • TwitchListener calls this automatically, as Twitch does not support WHO.
  • Changed TLS/SSL builder methods from File to Path.
    • secureKeyCertChain(Path) and secureKey(Path).
  • ChannelKickEvent now supports being kicked by a Server.
    • UnexpectedChannelLeaveViaKickEvent thus does as well.
    • Removed deprecated (and now unnecessary) classes:
    • ChannelKickByServerEvent
    • UnexpectedChannelLeaveViaKickByServerEvent
  • Added convenience method MessageReceiver#getLowerCaseMessagingName().
  • Broke a few constructors that took Optional, instead pushing creation of Optional to getters.
  • Potentially improved connection cleanup handling.
  • Updated to latest (4.1.19) Netty.

IRC Client Library 3.3.1 released!

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

Hold me closer tiny changelog

  • Fixed bug preventing Client#addKeyProtectedChannel methods from working.

IRC Client Library 3.3.0 released!

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

New features

  • New event UserAccountStatusEvent for when account-notify informs the client of someone signing in or out.
  • New event UserAwayMessageEvent for when away-notify informs the client of someone going away or returning.
  • The away message is now available in User if known (via away-notify).
  • A KittehNagException is fired if the client uses an insecure trust manager factory.
    • Thanks, kashike!
  • Newest items moved into public API:
    • Default CapabilityManager implementation made public (DefaultCapabilityManager).
    • Can be set in the builder.
    • Default CapabilityState implementation made public (DefaultCapabilityState).
    • Default WhoisData implementation made public (DefaultWhoisData).
    • Comes with its own builder, too!

Smaller changes

  • Included cap-notify in CapabilityManager.Defaults.
    • Already supported implicitly when capabilities are negotiated.
  • ServerInfo#toString() now provides the information it contains.
  • Updated to MBassador 1.3.1 which allows for new filter definitions.
    • Thanks, kashike!
  • Updated to latest (4.1.15) Netty.

IRC Client Library 3.2.3 released!

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


  • Fixed bug where toString on the client builder could cause a NullPointerException.
    • Thanks, kashike!