23 Mar 2019
Version 7.1.0 of the Kitteh IRC Client Library has been released!
Changes:
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.
14 Mar 2019
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:
- ELIST, EXCEPTS, EXTBAN, HOSTLEN, INVEX, MAXTARGETS, SILENCE, STATUSMSG, USERLEN.
- 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.
03 Mar 2019
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.
24 Feb 2019
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.
Also
- Updated to latest (4.1.33) Netty.
23 Feb 2019
Version 5.1.1 of the Kitteh IRC Client Library has been released!
Changes:
- 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.