Commits on Jan 2, 2017
  1. Split messages on newlines as per IRC protocol

    When handling user input sent over the protocol, split apart messages
    on QChar::LineFeed, processing and displaying each as individual
    messages sent one after the other.  This applies to /query, /say,
    /notice, and /me.  Otherwise, the IRC protocol interprets anything
    after each line break as a new message.
    Fixes inability to send multi-line content via copy-paste on
    Quasseldroid.  Quassel desktop currently works around this issue by
    sending multiple individual messages for every line break.
    Test case:
    1.  Install Quasseldroid (stable or alpha), connect to a core
    2.  Copy some text to the Android clipboard that has a line break in
        it (not just word-wrap).
    3.  Paste into Quasseldroid
    4.  Send message
    Before: Message shows up with line break (LF character on desktop),
            IRC server treats all lines after first as raw commands.
    After:  Message gets split into multiple smaller messages at each
            line break.
    This should also work for /query, /say, /notice, and /me.
    Closes GH-263.
    digitalcircuit committed with AlD Dec 27, 2016
Commits on Dec 25, 2016
  1. Make reloadCerts also handle the IPv6 server

    Closes GH-264.
    wjp committed with AlD Nov 27, 2016
  2. Do a full install by default

    Closes GH-261.
    TheOneRing committed with AlD Oct 22, 2016
Commits on Nov 28, 2016
  1. Fix AppVeyor Chocolatey failures by retrying

    Merges pull request #265 from digitalcircuit/fix-ci-retry-chocolatey
    AlD committed on GitHub Nov 28, 2016
  2. Fix typo Chocolately -> Chocolatey

    Official name is Chocolatey, e.g. .
    (The number of times I've mistyped this myself...)
    digitalcircuit committed Nov 28, 2016
  3. Retry Chocolatey install to workaround failures

    Automatically retry up to 3 times on failure when installing
    Chocolatey modules, using the 'appveyor-retry' script.  This can be
    removed later if needed.
    Sometimes Chocolatey returns a 404 for a package that exists.  This
    happens a lot.  The official fix is to get the Business edition for
    the more-stable private CDN, but since we're an open-source community
    effort, sometimes a little kludgery goes a long way.
    And appveyor/ci#418
    digitalcircuit committed Nov 28, 2016
Commits on Oct 13, 2016
  1. Fix hang for single result search after others

    Add check for equal start and end indices in updateHighlights, stop
    the search loop when this happens.  Regular search still seems to
    work fine (if you found this via 'git blame', whoops).
    Unfortunately, this seems specific to the contents of a buffer.
    First, find a buffer that you've encountered freezing, and keep track
    of what was loaded, where it was, and the two most recent search
    For example...
    1.  Load some backlog to a buffer
    2.  Search for term with any number of matches
    3.  Making sure to -type over existing words without first
        backspacing-, search for another term with only one match
    Expected: Search results found, no freezing
    Actual:   Quassel hangs.  startPos and endPos = same place,
              start = 0, end = 0, _currentHighlight appears to retain
              values from the previous search.
    Resolves GH-259.
    digitalcircuit committed with Sput42 Oct 13, 2016
  2. Re-add execute permissions to bundled inxi

    Re-add execute permissions to bundled copy of inxi, letting Quassel
    run it via /exec (including /sysinfo and /inxi).
    Finishes up upgrade started in 83923d7
    Resolves GH-258.
    digitalcircuit committed with Sput42 Oct 4, 2016
  3. Fix CoreNetwork::updateRateLimiting comments

    Expand and fix opening summary comment, also remarking that the token
    bucket should -not- be reset in this function.
    Fix description of logic for _skipMessageRates.
    Fix alignment of indented comments describing variables.
    Resolves GH-257.
    digitalcircuit committed with Sput42 Sep 30, 2016
  4. Hide AutoWHO for nicks without IrcUser objects

    Don't require an IrcUser to exist when checking if WHO replies should
    be hidden.  The nickname is enough for checking.
    This mimics CoreSessionEventProcessor::processIrcEvent403, where
    ERR_NOSUCHCHANNEL replies are hidden if nickname is in the list
    regardless of whether or not an IrcUser object exists.
    Potentially fixes AutoWHO replies showing in the server buffer when
    nicks quickly join and leave channels, resulting in the IrcUser
    object getting destroyed before the server replies to the AutoWHO
    It's difficult to recreate the issue on demand, so it's quite
    possible there's more to fix.
    Resolves GH-256.
    digitalcircuit committed with Sput42 Sep 29, 2016
  5. Disable high DPI scaling on anything but Windows

    The automatic scaling only works well on Windows.
    See e. g. e33532e048fa12ee32429ca83ee31aa8f065147d in qttools,
    QTBUG-50698 and QTBUG-52318.
    Resolves GH-254.
    sandsmark committed with Sput42 Sep 25, 2016
  6. Enable per-chat history, line wrap by default

    Enable input widget per-chat history and line wrapping by default,
    following the behavior of Quassel Web and most Messaging/SMS apps
    (HexChat does per-chat history by default, but not line wrapping).
    Bump settings minor version to 3, preserve old defaults for upgrades.
    This shows the minimum necessary to change default settings while
    preserving previous defaults for existing installs.
    Resolves GH-253.
    digitalcircuit committed with Sput42 Sep 24, 2016
  7. Keep old clients from removing message rate delay

    Add a guard against zero message delay in setMessageRateDelay,
    following the error-checking of setMessageRateBurstSize.  This blocks
    old clients from setting message rate delay to 0 seconds for newly-
    created networks, improperly overriding the default of 2.2 seconds.
    This affects creating a network in an old client, switching to a new
    client, then enabling custom rate-limits.
    The supported method for removing rate limits by setting Unlimited to
    true still works.
    Resolves GH-252.
    digitalcircuit committed with Sput42 Sep 22, 2016
  8. Default to sqlite backend in core creation wizard

    This introduces the notion of a "default" storage backend into
    the core by adding a function (Core::isStorageBackendDefault),
    which returns true if a given Storage object is 'default' and
    false if not. This information is then added to the BackendInfo
    dictionary passed through the protocol to the user interface,
    which ensures the backend that is default will always be the
    one displayed by default.
    This change was prompted by conversation in IRC with [Saint]
    and @digitalcircuit about making core creation slightly more
    This allows us to, potentially, change the default storage
    backend shown at core creation time should at some point
    another backend be introduced, without having to modify
    the interface.
    It is a little weird having "isDefault" be an attribute of
    *each* storage backend, but this was the simplest way to do
    it without modifying the handshake. (Whichever is the last
    storage backend to claim to be the default will win).
    (As an aside, should this be merged and should #170 be merged
    I'll implement something similar for authenticators in a
    separate PR).
    Resolves GH-250.
    TC01 committed with Sput42 Sep 19, 2016
Commits on Oct 8, 2016
  1. dcc: Add settings page for DCC configuration

    Sput42 committed Oct 8, 2016
Commits on Oct 7, 2016
  1. dcc: Add persistent settings for core-side DCC

    This introduces a new syncable object DccConfig that holds core-side
    DCC settings, such as the network configuration. The configuration
    is persisted as a per-user setting in the database.
    The CoreSession's DccConfig instance is synced to connected clients
    and accessible via the Client singleton.
    Sput42 committed Oct 7, 2016
Commits on Oct 6, 2016
  1. common: Work around SFINAE issues in MSVC

    MSVC 2015 still has... issues with SFINAE, so the usual way to use
    std::enable_if doesn't compile. So let's try and SFINAE this in a
    different way until MS fixes their compiler.
    Sput42 committed Oct 6, 2016
Commits on Oct 5, 2016
  1. dcc: Name TransferManager object for syncing

    This magically fixes older clients who try to sync an unnamed
    TransferManager with unknown data types.
    Sput42 committed Oct 5, 2016
Commits on Oct 4, 2016
  1. common: Remove unused Exception type

    Also fix a typo in docs.
    Sput42 committed Oct 4, 2016
  2. common: Add generic stream operators for enum types

    These operators use the underlying type of a given enum to
    (de)serialize to and from QDataStream.
    Sput42 committed Oct 4, 2016
Commits on Oct 3, 2016
  1. dcc: Retrieve transfer list on TransferManager change

    If TransferModel is given a new manager, it should retrieve the
    list of transfers just in case (even though, in practice, the manager
    should not hold any transfers right after sync).
    Sput42 committed Oct 3, 2016
Commits on Sep 29, 2016
Commits on Sep 28, 2016
  1. dcc: Properly sync TransferManager

    Existing transfers were not synced to the client. With this commit,
    the list of transfer IDs is marked as a Q_PROPERTY and thus synced
    Also provides the necessary serialization support.
    Sput42 committed Sep 28, 2016
  2. dcc: Only show file receive dialog for new transfers

    ... and not for ones that have been around on the core already
    prior to syncing.
    Sput42 committed Sep 28, 2016
  3. dcc: Add rudimentary view for file transfers

    For now this is just a stock QTableView for visualizing the
    TransferModel. Will be replaced by a proper view later.
    Sput42 committed Jun 10, 2016
  4. dcc: Introduce TransferModel for DCC file transfers

    This model serves as input for a yet-to-come widget for displaying
    the current list of transfers.
    Sput42 committed Jun 8, 2016
Commits on Sep 27, 2016
  1. Use override in a few more places to avoid compiler warnings

    Clang complains about inconsistent use of virtual and override, and
    for some reason the only offender when building against Qt 5 was
    multilineedit.h. This commit fixes the ungodly amount of warnings that
    that one header produced.
    When building against Qt 4 we still get warnings from the various
    application classes; however fixing them triggers a million new
    warnings related to Q_OBJECT which is beyond our control, so we'll
    just have to wait until we can finally deprecate support for Qt 4
    for good...
    Sput42 committed Sep 27, 2016
  2. Avoid deprecation warnings with Qt 5.7

    The versioned QStyleOption derivatives are deprecated in Qt 5,
    and Qt 5.7 actually gets noisy about that. So remove these by
    the unversioned class names.
    Sput42 committed Sep 27, 2016
Commits on Sep 20, 2016
  1. Fix my AboutData entry

    My PPAs only work for Ubuntu, not Debian.
    Resolves GH-251.
    mamarley committed with Sput42 Sep 19, 2016
  2. Update ThanksTo in the AboutDlg

    This was pretty outdated and mentioned companies that no longer exist.
    Bring the content of that tab into the present. Add new icons, remove
    Also modernize the code a tiny bit, and ease the life of translators
    by factoring out most of the RichText stuff.
    Sput42 committed Sep 20, 2016
Commits on Sep 19, 2016
  1. Updates old links/urls in the about dialog

    Scheirle committed with Sput42 Sep 15, 2016
  2. Update ChangeLog

    Sput42 committed Sep 19, 2016
  3. Update AboutData

    New contributors, and one new author!
    Sput42 committed Sep 19, 2016