~qutim/libcommuni/master

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
3.6.0
-----
- Important behavior changes
  - IrcBufferModel has been changed to deliver notice messages to
    the target buffer, and create the buffer if it does not exist.

3.5.0
-----
- General
  - Added support for debug levels and filters
- IrcCore
  - Added IrcCommand::network
  - Added IrcBatchMessage
  - Added IrcConnection::ctcpReplies
  - Added IrcMessage::tag(name)
  - Added IrcMessage::setTag(name, value)
  - Added IrcMessage::parameter(index)
  - Added IrcMessage::setParameter(index, parameter)
  - Added IrcMessage::implicit
  - Added Irc::secureSupported
  - Added Irc::supportedSaslMechanisms
  - Deprecated IrcConnection::secureSupported
  - Deprecated IrcConnection::supportedSaslMechanisms
  - Added Irc::supportedCapabilities
  - Added IrcMessage::clone()
  - Added IrcMessage::testFlag()
  - Added IrcMessage::setFlag()
  - Added IrcWhoisMessage::awayReason

3.4.0
-----
- IrcCore
  - Added IrcConnection::clone()
  - Added IrcCommand::createMonitor()
  - Added IrcNetwork::statusPrefixes
  - Added IrcNetwork::MonitorCount enum value
  - Added IrcMessage::account
  - Added IrcPrivateMessage::statusPrefix
  - Added IrcNoticeMessage::statusPrefix
  - Added IrcHostChangeMessage
  - Added Irc::RPL_MONONLINE, RPL_MONOFFLINE, RPL_MONLIST, and
    RPL_ENDOFMONLIST enum values
  - Added support for the following IRCv3.2 extensions: account-tag,
    cap-notify, chghost, monitor, and server-time
- IrcModel
  - Added Irc::SortByActivity support to IrcBufferModel
  - Added IrcBufferModel::monitorEnabled
- IrcUtil
  - Added IrcCommandQueue

3.3.0
-----
- IrcCore
  - Added IrcConnection::nickNames
  - Added IrcConnection::servers
  - Added IrcCommand::connection
  - Added IrcMessage::Implicit
  - Added IrcInviteMessage::isReply()
    - NOTE: Notice that there is no need to catch RPL_INVITING or
            RPL_INVITED anymore. These numeric replies are now
            composed to IrcInviteMessage.
  - Added IrcJoinMessage::account and IrcJoinMessage::realName
    - NOTE: Only set if the extended-join capability is enabled.
  - Added IrcAccountMessage
    - NOTE: Only received if the account-notify capability is enabled.
  - Added IrcAwayMessage
    - NOTE: Notice that there is no need to catch RPL_AWAY, RPL_UNAWAY,
            or RPL_NOWAWAY anymore. These numeric replies are now
            composed to IrcAwayMessage. For other users, only received
            if the away-notify capability is enabled.
  - Added IrcNumericMessage::composed
  - Added IrcWhoisMessage and IrcWhowasMessage
- IrcModel
  - Added IrcChannel::who() slot for convenience
  - Added IrcBufferModel::joinDelay
  - Added IrcUserModel::titles

3.2.0
-----
- General
  - Relicensed to BSD
- Build system
  - Added support for no_install_xxx qmake configs
  - Exported qmake variables IRC_VERSION(_MAJOR/MINOR/PATCH)
- IrcCore
  - Introduced IrcProtocol
  - Exposed IrcConnection::protocol
  - Added IrcConnection::secureSupported
  - Added IrcConnection::secureError() [signal]
  - Restored IrcMessage::own for convenience
  - Added Playback to IrcMessage::Flags
  - Added IrcMessage::setFlags()
  - Added IrcCore::registerMetaTypes()
- IrcModel
  - Added IrcBufferModel::receiveMessage()
  - Added IrcModel::registerMetaTypes()
  - Handle IrcMessage::Playback as appropriate
- IrcUtil
  - Made IrcCommandParser retain whitespace and compose a single
    command parameter out of a multi-word input parameter
  - Made IrcCompleter prioritize channel users over buffer names
  - Added IrcCompleter::Direction
  - Added IrcUtil::registerMetaTypes()
  - Added IrcTextFormat::parse()
  - Added IrcTextFormat::plainText
  - Added IrcTextFormat::html
  - Added IrcTextFormat::urls

3.1.1/3.0.3
-----------
- General
  - Fixed configure script's default imports and qml directories
  - Added missing namespace macros to the QML plugins
- IrcCore
  - Added missing enums to Irc::registerMetaTypes()
- IrcModel
  - Fixed IrcChannel::isChannel() for namespaced builds

3.1.0
-----
- General
  - IrcUtil now depends on IrcModel
- IrcCore
  - Added IrcConnection::userData
  - Added IrcConnection::saveState()
  - Added IrcConnection::restoreState()
  - Added IrcConnection::channelKeyRequired() [signal]
  - Added IrcConnection::nickNameRequired() [signal]
  - Deprecated IrcConnection::nickNameReserved() [signal]
  - Added IrcMessage::tags
  - Added IrcModeMessage::arguments()
  - Introduced IrcWhoReplyMessage
- IrcModel
  - Added IrcBufferModel::empty
  - Added IrcBufferModel::saveState()
  - Added IrcBufferModel::restoreState()
  - Added IrcBufferModel::persistent
  - Added IrcChannel::key
  - Added IrcChannel::join(QString key)
  - Added IrcBuffer::userData
  - Added IrcBuffer::close()
  - Added IrcUserModel::empty
  - Added IrcUser::away
  - Added IrcUser::servOp
- IrcUtil
  - Introduced IrcCompleter
  - Added IrcTextFormat::spanFormat
  - Improved IrcTextFormat::toHtml() performance on Qt 5 (QRegularExpression)
- Examples
  - Made the QtQuick example remember connection settings (requires Qt 5.2)

3.0.2
-----
- General
  - Added missing QML plugin type info files
- IrcCore
  - Fix login when SASL enabled but not available
  - Fixed RPL_ISUPPORT handling when server sends ERR_NOMOTD
- IrcModel
  - Fixed IrcBufferModel to not block IrcBuffer signals on destruction/removal
  - Fixed IrcBufferModel to deliver own echoed messages to the target buffer
- IrcUtil
  - Fixed IrcTextFormat::toHtml() to not percent encode comma in URLs

3.0.1
-----
- IrcCore
  - Fixed IrcConnection::open() to bail out when already active
  - Fixed IrcModeMessage::kind() for modes with arguments
- IrcModel
  - Added missing IrcUserModel::channelChanged() to docs
  - Fixed a potential crash in IrcUserModel sorting
  - Fixed IrcChannel::isActive() on quit
  - Fixed IrcBufferModel to deliver messages only to active buffers
  - Fixed IrcUser mode & prefix sorting in the "ranking" order
- IrcUtil
  - Added missing export macro to IrcPalette
  - Fixed IrcTextFormat::toHtml() to percent encode special characters in URLs

3.0.0
-----
- General
  - Modularized: IrcCore, IrcModel & IrcUtil
  - Added namespace support
  - Full QML support & restored the QML plugin
  - Renamed all COMMUNI_XXX macros to IRC_XXX
  - Made uchardet the default encoding detection backend
- IrcCore
  - Added Irc::registerMetaTypes()
  - Renamed Irc::toString() to Irc::codeToString()
  - Added Irc::nick/ident/hostFromPrefix()
  - Renamed IrcSessionInfo to IrcNetwork
  - Renamed IrcSession to IrcConnection
  - Added IrcConnection::network
  - Added IrcConnection::enabled
  - Added IrcConnection::status
  - Added IrcConnection::displayName
  - Added IrcConnection::reconnectDelay
  - Replaced IrcConnection::password signal with a property
  - Added IrcConnection::saslMechanism & supportedSaslMechanisms
  - Added IrcConnection(host, parent) convenience constructor
  - Made IrcConnection::sendCommand() queue when inactive
  - Introduced IrcCommandFilter
  - Removed IrcSender
  - Replaced IrcMessage::sender with IrcMessage::(prefix|nick|ident|host)
  - Added IrcMessage::network
  - Added IrcPrivate/NoticeMessage::private property
  - Replaced IrcNickMessage::nick with oldNick & newNick
  - Renamed IrcPrivate/NoticeMessage::message to content
  - Replaced IrcMessage::fromCommand() with IrcCommand::toMessage()
- IrcModel
  - Added IrcUserModel::sortOrder & sortMethod
  - Added IrcUserModel::indexOf(IrcUser*)
  - Added IrcUserModel::clear()
  - Added IrcUser::title
  - Renamed IrcUserModel::user(QString) to find(QString)
  - Added IrcBufferModel::network
  - Added IrcBufferModel::sortOrder & sortMethod
  - Added IrcBufferModel::add(IrcBuffer*)
  - Added IrcBufferModel::indexOf(IrcBuffer*)
  - Added IrcBufferModel::remove(IrcBuffer*)
  - Added IrcBufferModel::buffer/channelPrototype
  - Split IrcBufferModel::create() to createBuffer() & createChannel()
  - Renamed IrcBufferModel::user(QString) to find(QString)
  - Removed IrcBufferModel::destroy()
  - Added IrcBuffer::persistent
  - Added IrcBuffer::sticky
  - Added IrcBuffer::network
  - Added IrcBuffer::receiveMessage()
- IrcUtil
  - Added IrcCommandParser::tolerant
  - Renamed IrcCommandParser::currentTarget to target
  - Replaced IrcCommandParser::prefix with triggers
  - Added details for IrcCommandParser::syntax()
  - Added IrcPalette color name properties
- Examples
  - Added a minimal example - connect, join & message in 8 lines of code
  - Added a Qt Quick based GUI client example
  - Added a bot example written in QML

2.2.0
-----
- Implemented SASL support (http://freenode.net/sasl)
- Introduced IrcBufferModel, IrcUserModel and IrcCommandParser
- Added new IrcSession convenience signals
  - void xxxMessageReceived(IrcXxxMessage* message)
  - void nickNameReserved(QString* alternate)
- Added bool IrcSession::secure property
- Added IrcSession::quit() slot for convenience
- Allowed constructing an invalid IrcSessionInfo
- Added IrcSessionInfo::channelModes(A|B|C|D)
- Added IrcModeMessage::Kind { Channel, User }
- Added IrcTopicMessage::isReply() and IrcModeMessage::isReply()
  - NOTE: Notice that there is no need to catch RPL_TOPIC, RPL_NOTOPIC
          or RPL_CHANNELMODEIS anymore. These numeric replies are now
          composed to IrcTopicMessage and IrcModeMessage.
- Made IrcLagTimer::session a writable property
- Improved submodule support:
  https://github.com/communi/libcommuni/wiki/Submodule
- Overall documentation improvements

2.1.1
-----
- Add missing docs for IrcMessage::Motd/Names enum values
- Enable using communi as a static lib & git submodule
- Fixed a memory leak in IrcProtocol
- Other cosmetic docs & build system cleanups and improvements

2.1.0
-----
- Introduced IrcMessageFilter and IrcLagTimer
- Added IrcSessionInfo::availableCapabilities() and activeCapabilities()
- Added QDebug stream operators for IrcSender
- Added QDataStream operators for IrcPalette and IrcTextFormat
- Added comparison operators for IrcSender, IrcPalette and IrcTextFormat
- Added IrcCommand::createPing()
- Added IrcMotdMessage and IrcNamesMessage
- Made IrcSession::sendCommand() only delete parentless commands
- Fixes and improvements to the congigure script

2.0.1
-----
- Fixed IrcMessage::toData()
- Fixed identify-msg capability handling
- Fixed ICU linking on 64-bit Windows
- Fixed IrcSession::close() to abort connecting

2.0.0
-----
- Focus on easy deployment
  - Removed all plugins
  - Better support for static builds and including(src.pri)
- Removed Symbian support
- The default FALLBACK encoding changed from UTF-8 to ISO-8859-15
  - UTF-8 did not make much sense as the default fallback encoding,
    since the fallback is only used when the message is detected NOT
    to be valid UTF-8 and the auto-detection fails
- Radically simplified examples
- Removed all deprecated classes and methods
- API changes:
  - Added:
    - IrcPalette
    - IrcTextFormat
    - IrcSessionInfo
    - IrcMessage::session
    - IrcMessage::timeStamp
    - IrcCommand::Type & IrcCommand::createXxx() for:
      - admin/info/knock/list/motd/stats/time/trace/users/version/who
  - Removed:
    - IrcUtil
      - use IrcTextFormat & IrcPalette instead
    - IrcCodecPlugin
      - use qmake -config icu or -config uchardet instead
    - IrcMessage::isOwn
      - use IrcMessage::flags() & IrcMessage::Own instead
    - IrcMessage::toString()
      - use IrcMessage::toData() instead
    - IrcMessage::fromString()
      - use IrcMessage::fromData/Command/Parameters() instead

1.2.2
-----
- Qt 5.0.0 final specific build fixes
- Fixed CTCP reply handling
- Fixed SSL connections

1.2.1
-----
- Fixed #24: IrcSessionPrivate::_q_error() is too verbose
- Fixed #25: IrcSessionPrivate::processLine() should not respond to
  CTCP requests
- Qt 5 specific build fixes
- Made the default fallback encoding ISO-8859-1
- Fixed a performance bottleneck in IrcDecoder::setEncoding()

1.2.0
-----
- Qt 5 support
- Implemented support for IRC capabilities as specified at
  http://www.leeh.co.uk/draft-mitchell-irc-capabilities-02.html
- Implemented support for the "identify-msg" capability
- Pluginized the message decoder
  - The default message decoder plugin is based on uchardet, which
    is built into the plugin, making it available on all platforms
  - An alternative message decoder plugin based on ICU is available
    in src/plugins/icu must be enabled/built by hand. It requires
    the presence of ICU (modify icu.pri if necessary) that is not
    available for all Communi supported platforms
  - The used message decoder plugin may be controlled by setting the
    COMMUNI_CODEC_PLUGIN (values: uchardet,icu) environment variable
  - In conjuction with the standard QT_PLUGIN_PATH, plugin paths may
    be controlled by setting the COMMUNI_PLUGIN_PATH environment
    variable
- API changes:
  - Added IrcCodecPlugin
  - Added QByteArray IrcMessage::encoding [property]
  - Added IrcMessage::Flags and IrcMessage::flags()
    - None, Own, Identified, Unidentified
  - Added IrcMessage::Capability and IrcCapabilityMessage
  - Added IrcCommand::Capability and IrcCommand::createCapability()
- Facelifted the desktop example

1.1.2
-----
- Docs:
  - Fixed IrcMessage::Private enum value to appear
- Examples:
  - Fixed settings to be remembered
  - Fixed a performance issue in channel message nick highlighting

1.1.1
-----
- Various build system fixes and improvements
  - Fixed shadow builds
  - Configure: improved qmake(-qt4) detection & added error handling
  - Fixed plugins, examples and tests to link to the local built libs
    instead of the installed ones whether they happen to exist
  - Added a 'no_rpath' qmake config
- Examples: fixed message formatting clash with nick names & URLs

1.1.0
-----
- Introduced a configure script
- Added a Symbian (QML) example
- Significantly revised the desktop example
  - Added dock icon badge, topic label & channel user list
  - Made it possible to emded parts into another app
- Replaced ICU with uchardet as the encoding detection engine
  - ICU is not available on all platforms, whereas uchardet is
    built into Communi and therefore available on all platforms
- IrcUtil::messageToHtml() to handle mIRC style background colors
- Detect message encoding part by part, instead of for the whole line
- Changed the semantics of IrcSession::encoding to a fallback encoding
- API changes:
  - Added bool IrcMessage::own [property]
  - Added IrcMessage::fromData() - deprecated IrcMessage::fromString()
  - Added IrcMessage::toData() - deprecated IrcMessage::toString()
  - Added QByteArray IrcCommand::encoding [property]
  - Added bool IrcSession::sendData(const QByteArray& data)

1.0.0
-----
- Renamed Communi (was LibIrcClient-Qt)
- Underwent a major rewrite
  - Split the monolithic IrcSession class
  - New event/message & property based IrcSession API
  - Removed the problematic buffer concept
  - New public classes: IrcCommand and IrcMessage & subclasses
- Improved QML compatibility
  - QObject based messages & commands
  - Used properties, signals, slots and invokables
  - Provided a declarative plugin: import Communi 1.0
- Environment variable COMMUNI_DEBUG=1 to help debugging - log socket state
  changes and received messages to the debug output
- Added desktop (QWidgets) & MeeGo (QML) examples

0.5.0
-----
- Irc::Session API additions:
  - addBuffer() and buffers() for buffer management
  - welcomed() signal, emitted when 001 is received
- Added IRC capability support
- Implemented IDENTIFY-MSG capability
- Fixed "icu.pri: Unescaped backslashes are deprecated"
- Remove buffer upon parting a channel
- Fixed Session::raw()'s check of written bytes
- Fixed #3 An incorrect buffer is created when StripNicks is off and
  EchoMessages
- Improved building on Mac
  - Make a difference between frameworks and standard dylibs (depending
    on Qt's installation style)
  - Set INSTALL_NAME correctly

0.4.1
-----
- Added support for static builds (qmake -config static)
- Fixed qmake project messages output only once
- Fixed MOC_DIR in release mode
- Added default MacPorts paths for ICU
- Fixed notices and messages from "real host" vs. "connected host" to get
  directed to the same buffer
- Fixed CTCP requests not to create a new buffer

0.4.0
-----
- Introduced Irc::Buffer - the concept of server/channel/query specific buffers
- Deprecated buffer-specific functionality in Irc::Session
- Fixed tabs not to cause underlined text
- Added a version number to the library
- Added Irc::Rfc::toString()
- Fixed euIRC connection problems

0.3.2
-----
- Fixed problems with "unknown" messages
- Fixed Irc::Session::connectSlotsByName() not to try to establish
  a connection when the parameter types don't match
- Code improvements

0.3.1
-----
- Fixed compilation on Mac
- Fixed Irc::Session::connected() and disconnected() to be emitted correctly
- Fixed Irc::Session::connectSlotsByName() not to establish multiple
  connections when a slot exists multiple times (reimplemented)
- Made Irc::Session::cmdMessage(), cmdNotice() and cmdCtcpAction() to
  emit own messages, notices and actions. This simplifies client
  implementation
- Started working on auto tests and added code coverage support
- Added a workaround for older Qt versions that don't have the
  QT_FORWARD_DECLARE_CLASS() macro defined

0.3.0
-----
- Added SSL support
- Quality & compatibility
  - no_keywords
  - QT_NO_CAST_FROM_ASCII
  - QT_NO_CAST_TO_ASCII
- Bug fixes & code improvements

0.2.0
-----
- The first fully Qt-based version

0.1.1
-----
- Added support for optional encoding detection with ICU

0.1.0
-----
- The first internal release