Skip to content

Latest commit

 

History

History
498 lines (466 loc) · 19.1 KB

CHANGELOG.md

File metadata and controls

498 lines (466 loc) · 19.1 KB

[3.7.0] - 2021-12-18

  • 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

[3.6.0] - 2020-10-29

  • 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.
  • 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

[3.5.0] - 2016-11-18

  • 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] - 2015-07-19

  • 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] - 2014-12-29

  • 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] - 2014-08-09

  • 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] - 2014-05-17

  • 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] - 2014-03-08

  • 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.3] - 2014-05-17

  • 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.0.2] - 2014-02-02

  • 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] - 2013-11-12

  • 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] - 2013-10-20

  • 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] - 2013-08-12

  • 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] - 2013-06-02

  • 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] - 2013-05-19

  • 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] - 2013-04-26

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

[2.0.0] - 2013-03-08

  • 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] - 2013-01-05

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

[1.2.1] - 2012-12-03

  • 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] - 2012-10-06

  • 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] - 2012-09-05

  • 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] - 2012-08-13

  • 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] - 2012-08-06

  • 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] - 2011-11-11

  • 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] - 2010-11-05

  • 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] - 2010-07-02

  • 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] - 2010-05-08

  • 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] - 2009-08-30

  • 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] - 2009-04-10

  • 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] - 2009-02-06

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

[0.2.0] - 2009-01-12

  • The first fully Qt-based version

[0.1.1] - 2008-12-17

  • Added support for optional encoding detection with ICU

[0.1.0] - 2008-11-15

  • The first internal release