|
@@ -0,0 +1,209 @@
|
|
1
|
+= Changelog
|
|
2
|
+
|
|
3
|
+== Next version (in development)
|
|
4
|
+
|
|
5
|
+* Away support:
|
|
6
|
+** Added sendAway() method
|
|
7
|
+** Added UserAway event and fanned-out ChannelAway
|
|
8
|
+** Away message is now updated in the UserState
|
|
9
|
+* Added IrcClient.localUser property, returning the local User
|
|
10
|
+* Deprecated ServerState.localNickname in favour of localUser.
|
|
11
|
+* (Internal) improved the way byte buffers are used to
|
|
12
|
+ reduce array copying and clean up code
|
|
13
|
+* (Internal) Converted README, LICENCE and CHANGELOG to Asciidoc.
|
|
14
|
+
|
|
15
|
+== v1.0.1
|
|
16
|
+
|
|
17
|
+* Fixed issue with very long packets not fitting in buffers
|
|
18
|
+ after TLS decryption.
|
|
19
|
+* Improved error message when IrcClient.connect() is called
|
|
20
|
+ while already connected
|
|
21
|
+* Made IrcClient.disconnect() block until the disconnect has
|
|
22
|
+ been processed. This will be a very short period of time,
|
|
23
|
+ and allows callers to immediately call connect() again
|
|
24
|
+ afterwards if they wish
|
|
25
|
+* Fixed various issues with disconnecting TLS connections
|
|
26
|
+ not behaving correctly
|
|
27
|
+
|
|
28
|
+== v1.0.0
|
|
29
|
+
|
|
30
|
+* Replaced Ktor dependency with custom socket handling, which fixes
|
|
31
|
+ fatal issue when connecting to servers over TLS that request a
|
|
32
|
+ client certificate.
|
|
33
|
+* Added NicknameChangeRequired event for the case when a nickname is
|
|
34
|
+ not allowed during connection and *MUST* be changed
|
|
35
|
+* BREAKING: Added 'PreferIPv6' behaviour config, defaulting to true.
|
|
36
|
+ With this configuration KtIrc will try to use IPv6 if the server
|
|
37
|
+ publishes AAAA records.
|
|
38
|
+* BREAKING: Default port is now 6697, TLS is enabled by default
|
|
39
|
+
|
|
40
|
+== v0.11.0
|
|
41
|
+
|
|
42
|
+* Added SourcedEvent interface for events that have a user source attached
|
|
43
|
+* Added ChannelJoinFailed event
|
|
44
|
+* Added ChannelMembershipAdjustment interface for events that concern
|
|
45
|
+ users joining/leaving channels
|
|
46
|
+* Added missing user parameter to ModeChangedEvent
|
|
47
|
+
|
|
48
|
+== v0.10.3
|
|
49
|
+
|
|
50
|
+* Fix issue parsing CTCPs when the content contained multi-byte chars
|
|
51
|
+* Fixed multiple issues when receiving malformed input from the server:
|
|
52
|
+ * Invalid server-time tags are now ignored and the current time used
|
|
53
|
+ * PRIVMSGs, NOTICEs and TOPICs with no target/message are now ignored
|
|
54
|
+ * CAPs with invalid or missing arguments are now ignored
|
|
55
|
+ * Better handling for duplicate JOIN messages
|
|
56
|
+ * Ignored messages are now logged more consistently
|
|
57
|
+
|
|
58
|
+== v0.10.2
|
|
59
|
+
|
|
60
|
+* Fix handling of multiple long lines sometimes dropping part of the line
|
|
61
|
+* Support lines with 8191 bytes of tags, as allowed by the message-tags spec
|
|
62
|
+* Fix a few more instances of occasional ConcurrentModificationExceptions
|
|
63
|
+
|
|
64
|
+== v0.10.1
|
|
65
|
+
|
|
66
|
+* Added NickChangeFailed event for when nicknames are in use, banned, etc
|
|
67
|
+* Added sendPart method
|
|
68
|
+* Fix occasional ConcurrentModificationException when adding state
|
|
69
|
+* (Internal) Moved message processors into their own package
|
|
70
|
+* (Internal) Added ExperimentalIrcClient interface for features not yet ready for release
|
|
71
|
+
|
|
72
|
+== v0.10.0
|
|
73
|
+
|
|
74
|
+* Batch start and end events are no longer included in BatchReceived events
|
|
75
|
+* Batches now expose complete metadata from their start event
|
|
76
|
+* Added support for labelled-replies capability and label message tags
|
|
77
|
+* Added support for message-tags capability after it moved from draft
|
|
78
|
+* Added new methods for sending raw lines to the IRC server
|
|
79
|
+** send(tagMap(...), command, arguments) replaces send(line)
|
|
80
|
+** send(command, arguments) is available if no tags are to be sent
|
|
81
|
+** the line is built automatically (with spaces/' :' added appropriately)
|
|
82
|
+** send(line) is deprecated and will be removed after v1.0.0
|
|
83
|
+* Add 'alwaysEchoMessages' behaviour that makes it easier to deal with servers
|
|
84
|
+ that don't support the echo message capability
|
|
85
|
+* Added TargetedEvent, a subclass of IrcEvent, for all events that are
|
|
86
|
+ targeted to a user or channel
|
|
87
|
+* (Internal) Added annotation to track removal of deprecated methods
|
|
88
|
+* (Internal) Migrate unit tests to use Mockk instead of Mockito
|
|
89
|
+
|
|
90
|
+== v0.9.0
|
|
91
|
+
|
|
92
|
+* Improve DSL for creating an IrcClient to allow parameters to be passed to server and profile
|
|
93
|
+ e.g. IrcClient { server("irc.example.com", 6667) }
|
|
94
|
+* Add behaviour options
|
|
95
|
+** requestModesOnJoin - automatically sends a MODE request when joining a channel
|
|
96
|
+* Events now have a `metadata` property instead of a `time` (and time is available in metadata)
|
|
97
|
+** IrcEvent.time is now deprecated but will remain until after v1.0.0.
|
|
98
|
+** Metadata now contains the message ID, if any.
|
|
99
|
+** ActionReceived.messageId and MessageReceived.messageId are now deprecated, to be removed after v1.0.0.
|
|
100
|
+** Metadata now contains the event's batch ID, if any.
|
|
101
|
+* Added support for batches
|
|
102
|
+** All events in a batch are buffered until the batch is finished
|
|
103
|
+** The events are then published together in a single `BatchReceived` event
|
|
104
|
+* Added support for CHGHOST messages
|
|
105
|
+* (Internal) Improve performance when the MessageHandler is finding a processor for a message
|
|
106
|
+* (Internal) Introduced event mutators
|
|
107
|
+** Event mutators are now responsible for handling changing events in response to state
|
|
108
|
+ e.g. ChannelFanOutMutator creates Channel* events for global quits/nick changes/etc
|
|
109
|
+** Event handlers now just handle events, and don't return anything
|
|
110
|
+
|
|
111
|
+== v0.8.0
|
|
112
|
+
|
|
113
|
+* Added support for SCRAM-SHA-1 and SCRAM-SHA-256 SASL mechanisms
|
|
114
|
+* Added MotdLineReceived event
|
|
115
|
+* Added topic events and state
|
|
116
|
+* Add utility method IrcClient.isChannel(String) to identify if a target is a channel or not
|
|
117
|
+* (Internal) Move event handlers into their own package
|
|
118
|
+
|
|
119
|
+== v0.7.0
|
|
120
|
+
|
|
121
|
+* Fixed experimental API warnings when using IrcClient
|
|
122
|
+* BREAKING: IrcClients are now constructed using a DSL
|
|
123
|
+** Users of the library no longer need to care about the implementing class
|
|
124
|
+** Facilitates adding more options in the future without breaking existing implementations
|
|
125
|
+* SASL improvements
|
|
126
|
+** The enabled mechanisms can now be configured (in the SASL DSL)
|
|
127
|
+** Added support for EXTERNAL mechanism, disabled by default
|
|
128
|
+** Now attempts to renegotiate if the server doesn't recognise the SASL mechanism that was tried
|
|
129
|
+* Added UserNickChanged and corresponding ChannelNickChanged events
|
|
130
|
+* Added ServerConnectionError, raised when connecting to the server fails
|
|
131
|
+* (Internal) Minor version updates for Gradle, Kotlin and JUnit
|
|
132
|
+
|
|
133
|
+== v0.6.0
|
|
134
|
+
|
|
135
|
+* Changed USER command to not send the server name, per modern standards
|
|
136
|
+* Added support for SASL authentication (with PLAIN mechanism)
|
|
137
|
+* Removed some unused test code
|
|
138
|
+* Fixed handling of user mode changes on channels (op/deop/etc)
|
|
139
|
+* Message extensions:
|
|
140
|
+** Added support for IRCv3 message tags v3.3
|
|
141
|
+** Exposed message IDs in MessageReceived and ActionReceived events
|
|
142
|
+** When sending a message you can now indicate what it is in reply to
|
|
143
|
+** Added sendTagMessage() to send message tags without any content
|
|
144
|
+** The reply() utility automatically marks messages as a reply
|
|
145
|
+** Added react() utility to send a reaction client tag
|
|
146
|
+* State is now reset when the client is disconnected, so you can immediately reconnect
|
|
147
|
+* (Internal) improved how coroutines and channels are used in LineBufferedSocket
|
|
148
|
+
|
|
149
|
+== v0.5.0
|
|
150
|
+
|
|
151
|
+* Server state:
|
|
152
|
+** Added ServerConnecting and ServerDisconnected events
|
|
153
|
+** Server status now starts as Disconnected rather than Connecting
|
|
154
|
+** Improved error message when features are of an unexpected type
|
|
155
|
+* Channel modes:
|
|
156
|
+** CHANMODES feature is now stored as an array, not a single comma-separated string
|
|
157
|
+** Added ChanModeType enum, and method in ServerState to get the type of a mode
|
|
158
|
+** Added ModeChanged event, for user and channel mode changes and discovery
|
|
159
|
+** Added modes and modesDiscovered to ChannelState
|
|
160
|
+* Other new events:
|
|
161
|
+** Added MotdFinished event
|
|
162
|
+** Added UserAccountChanged event
|
|
163
|
+** Added ChannelUserKicked event
|
|
164
|
+** Added NoticeReceived event
|
|
165
|
+** Added CtcpReplyReceived event
|
|
166
|
+* Improved some documentation
|
|
167
|
+
|
|
168
|
+== v0.4.0
|
|
169
|
+
|
|
170
|
+* Added CtcpReceived and ActionReceived events
|
|
171
|
+* Added sendCtcp and sendAction message builders
|
|
172
|
+* Fix issue with messages being sent out of order, which sometimes caused problems connecting to passworded servers
|
|
173
|
+* Added 'network' server feature
|
|
174
|
+* Added serverName field to ServerState
|
|
175
|
+
|
|
176
|
+== v0.3.1
|
|
177
|
+
|
|
178
|
+* Added more documentation to public methods/classes
|
|
179
|
+* Fixed exception when sending multiple lines at once (e.g. when connecting!)
|
|
180
|
+
|
|
181
|
+== v0.3.0
|
|
182
|
+
|
|
183
|
+* Simplified how messages are constructed.
|
|
184
|
+** Instead of: client.send(joinMessage("#channel"))
|
|
185
|
+** Now use: client.sendJoin("#channel")
|
|
186
|
+* Added reply utility to easily send replies to message events
|
|
187
|
+* Server state improvements:
|
|
188
|
+** Added status field to ServerState
|
|
189
|
+** ServerConnected event is emitted as soon as the socket is connected
|
|
190
|
+** ServerReady event is emitted after logging in, negotiating, etc
|
|
191
|
+* Added extra debugging to show what type of events are being dispatched
|
|
192
|
+* Added ChannelQuit event, raised for each channel a user is in when they quit
|
|
193
|
+* (Internal) Event handlers can now return more events to emit
|
|
194
|
+
|
|
195
|
+== v0.2.1
|
|
196
|
+
|
|
197
|
+* Added documentation and reduced visibility of some internal methods/classes
|
|
198
|
+* (Internal) Enabled Travis, Codacy and Coveralls
|
|
199
|
+
|
|
200
|
+== v0.2.0
|
|
201
|
+
|
|
202
|
+* Added support for connecting over TLS
|
|
203
|
+* BREAKING: Simplified how event handlers are registered
|
|
204
|
+* BREAKING: Improved use of coroutines so users don't have to worry about them
|
|
205
|
+* (Internal) Upgraded to Gradle 5.1.1
|
|
206
|
+
|
|
207
|
+== v0.1.0
|
|
208
|
+
|
|
209
|
+* Initial release
|