Commits on May 23, 2016
  1. Fix definition element location

    Closes: gh-227 [via git-merge-pr]
    rjhornsby committed with dominikh May 21, 2016
Commits on Apr 26, 2016
Commits on Apr 25, 2016
Commits on Dec 17, 2015
Commits on Nov 1, 2015
  1. Bump version to 2.3.1

    dominikh committed Nov 1, 2015
Commits on Oct 27, 2015
  1. Don't remove plugin hooks accidentally

    Under certain code paths, using select! instead of select would lead to
    modifying the plugin's hooks, instead of just a local copy. This
    effectively broke hooks when using more than one event type.
    Fixes gh-207
    petertseng committed with dominikh Oct 27, 2015
Commits on Oct 26, 2015
  1. Restore old logging behaviour

    d0ede97 broke the way we were doing logging. Previously, a call to
    LoggerList#method would correspond to calls to Logger#method – after the
    change, they resulted in Logger#log calls only. This was made under the
    assumption that loggers only overwrote the format_* methods – However,
    they're also free to overwrite the incoming, outgoing, exception, ...
    This change restores the old behaviour by calling these methods again.
    dominikh committed Oct 26, 2015
  2. Bump version to 2.3.0

    dominikh committed Oct 26, 2015
Commits on Oct 25, 2015
  1. Implement log filtering

    Log filters take log messages as input and return modified messages.
    Additionally, they can drop messages by returning nil.
    This allows for filtering passwords or other information from log
    Closes gh-194
    dominikh committed Oct 25, 2015
  2. Document how to correctly create Channel and User instances

    Document that using and aren't the correct way of
    obtaining instances of these classes, and that one should use
    ChannelList and UserList instead.
    Thanks to Simon Lundström for an attempted patch.
    Closes gh-203
    dominikh committed Oct 25, 2015
  3. Small documentation fixes

    dominikh committed Oct 25, 2015
  4. Handle STATUSMSG correctly

    Some IRC servers support STATUSMSG. STATUSMSG allows sending messages to
    a subset of a channel's users, based on their mode. By sending a message
    to +#channel, only people who have voice or higher will receive the
    Previously, Cinch didn't take this into account at all. Message#channel
    would be nil and Message#reply only worked by chance (Cinch thought that
    +#channel was a user and replied to it).
    The new support explicitly supports STATUSMSG. For a message sent to
    +#channel, Message#channel will return #channel and Message#reply will
    reply to +#channel. Additionally, an attribute called
    Message#statusmsg_mode was added, which would contain the STATUSMSG mode
    that was addressed, using mode characters, not sigils. For +#channel,
    statusmsg_mode would be "v".
    There is currently no direct support for sending arbitrary STATUSMSG
    messages. That is, Channel has no APIs for it. Users who really need it
    have to construct their own Target instance. New APIs might be added in
    the future.
    dominikh committed Oct 25, 2015
Commits on Oct 23, 2015
  1. Bump version to 2.2.8

    dominikh committed Oct 23, 2015
Commits on Sep 28, 2015
  1. Bump version to 2.2.7

    dominikh committed Sep 28, 2015
  2. Use correct escape sequence in split_message

    The escape sequence "\z" doesn't actually exist and evaluates to a plain
    'z'. We meant to use "\cz". This is a regression introduced in
    dominikh committed Sep 28, 2015
Commits on Jul 8, 2015
  1. Bump version to 2.2.6

    dominikh committed Jul 8, 2015
Commits on Jun 14, 2015
  1. Simplify User#end_of_whois

    Use the :unknown? field in the data argument instead of an extra
    not_found argument for determining if a user didn't exist.
    dominikh committed Jun 14, 2015
  2. Don't loop WHOIS forever on 401

    We assumed that a 401 (no such nick) wouldn't be followed by a 318 (end
    of whois). This lead to our 318 incorrectly thinking that WHOIS was
    rate-limited and thus retrying it. Fix and simplify our logic.
    dominikh committed Jun 14, 2015
Commits on May 24, 2015
  1. Avoid deprecation warnings on Target#safe_notice

    Use #safe_send instead of the deprecated #safe_msg
    ochaochaocha3 committed with dominikh May 5, 2015
  2. Detect channel owners on InspIRCd

    It is supported via the m_chanprotect module[1].
    Cysioland committed with dominikh May 24, 2015
Commits on May 5, 2015
  1. Code cleanups

    Fix some minor code issues. No semantic changes.
    usandfriends committed with dominikh May 5, 2015
Commits on Apr 16, 2015
  1. Allow unused parameters in MODE for Slack

    Slack sends weird mode strings like "+v user : active", which leaves us
    with an additional parameter ("active"). Normally, we raise exceptions
    on invalid mode strings, to discover bugs in both our implementation as
    well as that of IRCds.
    As I don't expect Slack to fix this issue, and because there'll likely
    be more issues in the future, we add special support for Slack and
    ignore this error.
    dominikh committed Apr 16, 2015
  2. Detect the Slack IRC gateway

    dominikh committed Apr 16, 2015
Commits on Apr 3, 2015
  1. Don't return a User object for the bot

    UserList was handing out User objects for our bot, instead of the Bot
    object, which lead to attributes not syncing correctly.
    dominikh committed Apr 3, 2015
Commits on Mar 30, 2015
  1. bump version to 2.2.5

    dominikh committed Mar 30, 2015
  2. Set the correct authname on inspircd

    inspircd sends both WHOISACCOUNT and WHOISREGNICK, so only use User#nick
    as the authname when the IRCd provided no other authname.
    dominikh committed Mar 30, 2015
Commits on Mar 23, 2015
Commits on Mar 2, 2015
  1. Merge branch 'byte-split'

    Fix the splitting of multi-byte messages. We didn't cut between runes,
    but we did produce messages that were too long, so the IRC server would
    truncate them.
    dominikh committed Mar 2, 2015
Commits on Mar 1, 2015
  1. Fix calculation of message split position

    acc_rune_sizes should be set for each split because max_rune changes
    when single-byte and multi-byte characters are in the chunks.
    r should be (max_rune + 1) in slicing msg in 0...r (**less** than r).
    max_rune is a zero-based index.
    Additionally, use \z instead of \u00A0 to prevent word-splitting, as \z
    only takes up a single byte, same as an actual space.
    ochaochaocha3 committed with dominikh Mar 1, 2015
Commits on Feb 28, 2015