IRC Client Library 6.0.1 and 5.1.2 released!

Versions 6.0.1 and 5.1.2 of the Kitteh IRC Client Library have been released!

Bugs fixed:

  • Capability requests from the events will no longer request:
    • Capabilities already enabled.
    • The same capability multiple times.
  • Fixed issue with handling multi-line CAP LS messages.

IRC Client Library 6.0.0 released!

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

This is another MAJOR release coming fairly soon after the last one!

Oh no, I have to deal with breaking changes again!

Near-simultaneous to this release is version 5.1.1 which contains the only bug fix present in the 6.0.0 release. I plan to support 5.1.x with bug fixes for another few months, to allow time to update things. The breaking changes in this release are largely package or name changes, so the update process shouldn't be too bad regardless.

Let's talk changes!

New things

  • Added @MeCommandOnly filter for the CTCP events, which now also have a parent interface CtcpEvent.
  • CTCP handling is now friendlier, supporting even more broken input.
  • Added convenience methods to ModeStatusList (now an interface!) to get mode statuses by char input.
    • For example, you could get a channel mode change event's bans with event.getStatusList().getByMode('b');
    • Also added containsMode(char) method.
  • ModeStatus#isSetting() has become #getAction(), with an Action enum, to make things a bit clearer.
    • This changes mode-related commands.
  • IRCv3 message-tags capability support.
    • This capability indicates to the server that you can handle message tags including client-only tags, as well as TAGMSG.
    • account-tag, batch, and server-time also independently indicate supporting message tags, but only enable their own tags. This capability indicates accepting arbitrary tags (which KICL always supports anyway!).
    • Capability is now automatically requested if the server supports it.
    • Added method MessageTag#isClientOnly() to return true if a client-only tag (starts with +).
    • Added *TagMessageEvent classes for receiving a TAGMSG, which is a message containing only tags.
    • Maximum line length is now over nine thousand, to compensate for increased allowed lengths in this capability.
    • KICL now only keeps the last message tag of each name, per spec.
  • Networking customizability and DNS improvements.
    • You can now (why?) replace the Netty-based solution with your own, in the Client builder.
    • With access now to the NetworkHandler you can swap out the DNS resolver.
    • By default, the Netty system now uses a single JavaResolver for all connections, which should be sufficient for most setups.
    • I plan to write an improved resolver in the future, and welcome pull requests for such.

Breaking changes

  • Mode-related commands now use ModeStatus.Action instead of "need to read the javadocs" booleans.
  • AwayCommand methods renamed to away and notAway for clarity.
  • PrivateEvent no longer extends MessageEvent.
  • As part of making them accessible, NettyManager is now NettyNetworkHandler and its inner connection class is now outside and called NettyConnection.
  • ProxyType is now its own class in the network feature package.
  • AcceptingTrustManagerFactory, previously deprecated, is now removed.
  • ModeStatusList and ModeStatus are now interfaces (with default implementations).
  • Renamed ModeStatusList methods:
    • getStatuses -> getAll
    • getStatusString -> getAsString
  • DefaultModeInfo now properly lives in its own class.
  • Various packages migrated, mostly implementations.
    • Resolver, the interface, moved to the network feature package.


  • Updated to latest (4.1.33) Netty.

IRC Client Library 5.1.1 released!

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


  • Fixes bug where the client would throw exception instead of process being invited to a channel.
    • Also fixes other situations where not being in a channel is ok, but would throw an exception.

IRC Client Library 5.1.0 released!

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

Introducing, batch support!

  • Holds events until the end of a batch unless rejected at the start event below.
  • ClientBatchStartEvent ClientBatchEndEvent and ClientBatchMessageEvent for observing and controlling.
  • BatchReferenceTag tracks information on a tag.


  • Updated documentation to be more consistent in referencing TLS.
  • Deprecated AcceptingTrustManagerFactory
    • It will be gone in 6.0.0
    • Use InsecureTrustManagerFactory instead, not that you should.
  • Added support for ISUPPORT NICKLEN and KICKLEN information.

IRC Client Library 5.0.1 released!

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

Two bugs fixed:

  • Twitch support now properly registers event listening.
  • Changing out the message sending queue before connection no longer eats outgoing messages.
    • Necessary for functioning Twitch support.