- Fix build with Qt 6
- Add a way to skip capability validation
- Make sure to remove buffer from channel list when buffer get destroyed
- Don't reset connection count on connection close but on quit
- Support more responses to CAP LS 302
- General
- Fixed deprecation warnings up until Qt 5.15
- Removed MPL-licensed (BSD-incompatible) code
- A copy of uchardet-0.0.1, since MPL is not BSD-compatible. The system libuchardet is used via pkg-config (configure -uchardet).
- Mozilla's MPL-rdf_utils.c - QTextCodec is used instead.
- Improved uchardet & ICU selection and auto-detection.
- Modernized the codebase to use nullptr, override, and default member init
- Minor build system fixes
- Added -(no)make qml configure option
- IrcCore
- Added IrcConnection::connectionCount to count established connections
- Fixed UTF-8 handling in IrcMessageDecoder::decode()
- Fixed IrcProtocol to allow spaces in the PASS command
- IrcModel
- IMPORTANT BEHAVIOR CHANGES
- IrcBufferModel has been changed to deliver notice messages to the target buffer, and create the buffer if it does not exist.
- Fixed IrcBufferModel to sort channels with keys before channels without keys, and group as many channels into a single join command as possible.
- IMPORTANT BEHAVIOR CHANGES
- IrcUtil
- Fixed IrcTextFormat to exclude semi-colons while percent encoding URLs
- Fixed IrcTextFormat to retain HTML entities
- Fixed IrcLagTimer to count unanswered pings towards the lag
- 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
- 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
- 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
- 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
- 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
- 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)
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Fixed IrcMessage::toData()
- Fixed identify-msg capability handling
- Fixed ICU linking on 64-bit Windows
- Fixed IrcSession::close() to abort connecting
- 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
- IrcUtil
- Added:
- Qt 5.0.0 final specific build fixes
- Fixed CTCP reply handling
- Fixed SSL connections
- 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()
- 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
- Docs:
- Fixed IrcMessage::Private enum value to appear
- Examples:
- Fixed settings to be remembered
- Fixed a performance issue in channel message nick highlighting
- 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
- 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)
- 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
- 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
- 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
- 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
- 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
- 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
- Added SSL support
- Quality & compatibility
- no_keywords
- QT_NO_CAST_FROM_ASCII
- QT_NO_CAST_TO_ASCII
- Bug fixes & code improvements
- The first fully Qt-based version
- Added support for optional encoding detection with ICU
- The first internal release