123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- = Changelog
-
- == Next version (in development)
- * No changes yet
-
- == v1.1.1 (2019-03-14)
-
- * Fix occasional buffer overflow issue on TLS connections.
-
- == v1.1.0 (2019-03-13)
-
- * Away support:
- ** Added sendAway() method
- ** Added UserAway event and fanned-out ChannelAway
- ** Away message is now updated in the UserState
- * Added IrcClient.localUser property, returning the local User
- * Deprecated ServerState.localNickname in favour of localUser.
- * (Internal) improved the way byte buffers are used to
- reduce array copying and clean up code
- * (Internal) Converted README, LICENCE and CHANGELOG to Asciidoc.
-
- == v1.0.1 (2019-03-10)
-
- * Fixed issue with very long packets not fitting in buffers
- after TLS decryption.
- * Improved error message when IrcClient.connect() is called
- while already connected
- * Made IrcClient.disconnect() block until the disconnect has
- been processed. This will be a very short period of time,
- and allows callers to immediately call connect() again
- afterwards if they wish
- * Fixed various issues with disconnecting TLS connections
- not behaving correctly
-
- == v1.0.0 (2019-03-09)
-
- * Replaced Ktor dependency with custom socket handling, which fixes
- fatal issue when connecting to servers over TLS that request a
- client certificate.
- * Added NicknameChangeRequired event for the case when a nickname is
- not allowed during connection and *MUST* be changed
- * BREAKING: Added 'PreferIPv6' behaviour config, defaulting to true.
- With this configuration KtIrc will try to use IPv6 if the server
- publishes AAAA records.
- * BREAKING: Default port is now 6697, TLS is enabled by default
-
- == v0.11.0 (2019-03-06)
-
- * Added SourcedEvent interface for events that have a user source attached
- * Added ChannelJoinFailed event
- * Added ChannelMembershipAdjustment interface for events that concern
- users joining/leaving channels
- * Added missing user parameter to ModeChangedEvent
-
- == v0.10.3 (2019-02-26)
-
- * Fix issue parsing CTCPs when the content contained multi-byte chars
- * Fixed multiple issues when receiving malformed input from the server:
- * Invalid server-time tags are now ignored and the current time used
- * PRIVMSGs, NOTICEs and TOPICs with no target/message are now ignored
- * CAPs with invalid or missing arguments are now ignored
- * Better handling for duplicate JOIN messages
- * Ignored messages are now logged more consistently
-
- == v0.10.2 (2019-02-25)
-
- * Fix handling of multiple long lines sometimes dropping part of the line
- * Support lines with 8191 bytes of tags, as allowed by the message-tags spec
- * Fix a few more instances of occasional ConcurrentModificationExceptions
-
- == v0.10.1 (2019-02-24)
-
- * Added NickChangeFailed event for when nicknames are in use, banned, etc
- * Added sendPart method
- * Fix occasional ConcurrentModificationException when adding state
- * (Internal) Moved message processors into their own package
- * (Internal) Added ExperimentalIrcClient interface for features not yet ready for release
-
- == v0.10.0 (2019-02-21)
-
- * Batch start and end events are no longer included in BatchReceived events
- * Batches now expose complete metadata from their start event
- * Added support for labelled-replies capability and label message tags
- * Added support for message-tags capability after it moved from draft
- * Added new methods for sending raw lines to the IRC server
- ** send(tagMap(...), command, arguments) replaces send(line)
- ** send(command, arguments) is available if no tags are to be sent
- ** the line is built automatically (with spaces/' :' added appropriately)
- ** send(line) is deprecated and will be removed after v1.0.0
- * Add 'alwaysEchoMessages' behaviour that makes it easier to deal with servers
- that don't support the echo message capability
- * Added TargetedEvent, a subclass of IrcEvent, for all events that are
- targeted to a user or channel
- * (Internal) Added annotation to track removal of deprecated methods
- * (Internal) Migrate unit tests to use Mockk instead of Mockito
-
- == v0.9.0 (2019-02-15)
-
- * Improve DSL for creating an IrcClient to allow parameters to be passed to server and profile
- e.g. IrcClient { server("irc.example.com", 6667) }
- * Add behaviour options
- ** requestModesOnJoin - automatically sends a MODE request when joining a channel
- * Events now have a `metadata` property instead of a `time` (and time is available in metadata)
- ** IrcEvent.time is now deprecated but will remain until after v1.0.0.
- ** Metadata now contains the message ID, if any.
- ** ActionReceived.messageId and MessageReceived.messageId are now deprecated, to be removed after v1.0.0.
- ** Metadata now contains the event's batch ID, if any.
- * Added support for batches
- ** All events in a batch are buffered until the batch is finished
- ** The events are then published together in a single `BatchReceived` event
- * Added support for CHGHOST messages
- * (Internal) Improve performance when the MessageHandler is finding a processor for a message
- * (Internal) Introduced event mutators
- ** Event mutators are now responsible for handling changing events in response to state
- e.g. ChannelFanOutMutator creates Channel* events for global quits/nick changes/etc
- ** Event handlers now just handle events, and don't return anything
-
- == v0.8.0 (2019-02-12)
-
- * Added support for SCRAM-SHA-1 and SCRAM-SHA-256 SASL mechanisms
- * Added MotdLineReceived event
- * Added topic events and state
- * Add utility method IrcClient.isChannel(String) to identify if a target is a channel or not
- * (Internal) Move event handlers into their own package
-
- == v0.7.0 (2019-02-07)
-
- * Fixed experimental API warnings when using IrcClient
- * BREAKING: IrcClients are now constructed using a DSL
- ** Users of the library no longer need to care about the implementing class
- ** Facilitates adding more options in the future without breaking existing implementations
- * SASL improvements
- ** The enabled mechanisms can now be configured (in the SASL DSL)
- ** Added support for EXTERNAL mechanism, disabled by default
- ** Now attempts to renegotiate if the server doesn't recognise the SASL mechanism that was tried
- * Added UserNickChanged and corresponding ChannelNickChanged events
- * Added ServerConnectionError, raised when connecting to the server fails
- * (Internal) Minor version updates for Gradle, Kotlin and JUnit
-
- == v0.6.0 (2019-02-06)
-
- * Changed USER command to not send the server name, per modern standards
- * Added support for SASL authentication (with PLAIN mechanism)
- * Removed some unused test code
- * Fixed handling of user mode changes on channels (op/deop/etc)
- * Message extensions:
- ** Added support for IRCv3 message tags v3.3
- ** Exposed message IDs in MessageReceived and ActionReceived events
- ** When sending a message you can now indicate what it is in reply to
- ** Added sendTagMessage() to send message tags without any content
- ** The reply() utility automatically marks messages as a reply
- ** Added react() utility to send a reaction client tag
- * State is now reset when the client is disconnected, so you can immediately reconnect
- * (Internal) improved how coroutines and channels are used in LineBufferedSocket
-
- == v0.5.0 (2019-02-05)
-
- * Server state:
- ** Added ServerConnecting and ServerDisconnected events
- ** Server status now starts as Disconnected rather than Connecting
- ** Improved error message when features are of an unexpected type
- * Channel modes:
- ** CHANMODES feature is now stored as an array, not a single comma-separated string
- ** Added ChanModeType enum, and method in ServerState to get the type of a mode
- ** Added ModeChanged event, for user and channel mode changes and discovery
- ** Added modes and modesDiscovered to ChannelState
- * Other new events:
- ** Added MotdFinished event
- ** Added UserAccountChanged event
- ** Added ChannelUserKicked event
- ** Added NoticeReceived event
- ** Added CtcpReplyReceived event
- * Improved some documentation
-
- == v0.4.0 (2019-02-04)
-
- * Added CtcpReceived and ActionReceived events
- * Added sendCtcp and sendAction message builders
- * Fix issue with messages being sent out of order, which sometimes caused problems connecting to passworded servers
- * Added 'network' server feature
- * Added serverName field to ServerState
-
- == v0.3.1 (2019-02-04)
-
- * Added more documentation to public methods/classes
- * Fixed exception when sending multiple lines at once (e.g. when connecting!)
-
- == v0.3.0 (2019-02-03)
-
- * Simplified how messages are constructed.
- ** Instead of: client.send(joinMessage("#channel"))
- ** Now use: client.sendJoin("#channel")
- * Added reply utility to easily send replies to message events
- * Server state improvements:
- ** Added status field to ServerState
- ** ServerConnected event is emitted as soon as the socket is connected
- ** ServerReady event is emitted after logging in, negotiating, etc
- * Added extra debugging to show what type of events are being dispatched
- * Added ChannelQuit event, raised for each channel a user is in when they quit
- * (Internal) Event handlers can now return more events to emit
-
- == v0.2.1 (2019-02-03)
-
- * Added documentation and reduced visibility of some internal methods/classes
- * (Internal) Enabled Travis, Codacy and Coveralls
-
- == v0.2.0 (2019-02-02)
-
- * Added support for connecting over TLS
- * BREAKING: Simplified how event handlers are registered
- * BREAKING: Improved use of coroutines so users don't have to worry about them
- * (Internal) Upgraded to Gradle 5.1.1
-
- == v0.1.0 (2019-02-01)
-
- * Initial release
|