Permalink
Commits on Aug 16, 2018
  1. Set RUNTIME_OUTPUT_DIRECTORY instead of abusing OUTPUT_NAME

    floppym authored and Sput42 committed Aug 11, 2018
    This resolves an error when building with ninja:
    
    ninja: error: build.ninja:4374: multiple rules generate quasselcore
Commits on Jul 30, 2018
  1. Use new blueprint repo craft-blueprints-quassel

    TheOneRing authored and Sput42 committed Jul 27, 2018
Commits on Jul 24, 2018
  1. QtUiStyle: Support more font weights

    heftig authored and Sput42 committed Jul 19, 2018
    The chosen expression is more or less an inverse of the CSS weights to
    QFont::Weight translation in the QssParser.
  2. QssParser: Don't interpret `font: normal` as weight 0

    heftig authored and Sput42 committed Jul 19, 2018
    It fell through to the unchecked int conversion.
    
    Also handle "strikethrough" and don't forget to reset the underline
    style.
  3. QssParser: Interpret "oblique" as italic

    heftig authored and Sput42 committed Jul 19, 2018
    This is better than nothing.
Commits on Jul 18, 2018
  1. Bump version for release

    Sput42 committed Jun 21, 2018
  2. Update ChangeLog

    Sput42 committed Jun 21, 2018
  3. Update inxi to 3.0.18

    mamarley authored and Sput42 committed Jul 18, 2018
Commits on Jul 17, 2018
  1. client: Clarify highlight 'Channel' functionality

    digitalcircuit authored and Sput42 committed Jul 17, 2018
    Modify 'Channel' column tooltip to mention 'channel/query', since
    this actually refers to buffer name.  As it's less likely someone
    will want to set highlights on queries as they trigger notifications
    by default, don't rename the column itself.
  2. common: Empty highlight name matches all messages

    digitalcircuit authored and Sput42 committed Jul 17, 2018
    Don't force core-side highlight rules to have non-empty names,
    allowing for matching all messages by leaving the name empty.
    
    Requires core and client support, but as this has not been in a
    released version, and it's near release, backwards-compatibility
    shouldn't be required.
    
    Update tooltips to note this.  (After cleanup, only a single change!)
    
    This wasn't easily possible before as highlight names were the
    identifier for the highlight rule.  Now that we have IDs for
    highlight rules, there's no need to force names to be non-empty.
    
    NOTE:  This could cause confusion, but the flexibility in not having
    to use RegEx for the sake of matching every message seems worth the
    risk of people unintentionally setting empty highlight rules that
    match every message.
    
    Local highlights are not changed as they don't have IDs.
  3. client: Fix CoreHighlightSettings Sender resize

    digitalcircuit authored and Sput42 committed Jul 17, 2018
    Set CoreHighlightSettingsPage::SenderColumn to ResizeToContents,
    matching the other columns.  This was likely missed when originally
    adding this column.
  4. client: Unify CoreHighlightSettingsPage tooltips

    digitalcircuit authored and Sput42 committed Jul 17, 2018
    Move setting tooltips to a generic function, setupTableTooltips(), to
    keep tooltips consistent.  This fixes outdated tooltips in the
    highlight ignore rules table and reduces duplication.
    
    Add another function getTableTooltip() for getting the tooltips
    themselves.  Unfortunately, QTableWidgetItem does not inherit from
    QWidget, so function overloading (or equivalent) is necessary.  Alas,
    std::variant is C++17...
  5. cmake: Enable exceptions when building with KDE support

    Sput42 committed Jul 17, 2018
    The KDE cmake integration disables exceptions by default. Enable
    exceptions explicitly in the build system so our code builds.
  6. core: Improve handling of core initialization errors

    Sput42 committed Jul 15, 2018
    Since the event loop may not be running while the core is being
    initialized, calling exit() does not have the desired effect.
    Instead, throw an exception with exit code and error message to
    be able to handle this correctly. Exceptions must not be thrown
    through the event loop, so ensure that they're caught before in
    cases where the event loop was started already.
    
    For the monolithic client, introduce an asynchronous init method
    that catches potential exceptions and calls exit() instead. Show
    an error popup in the UI if an error message is provided, so the
    user gets some feedback before the client is terminated.
  7. core: Fix highlight nick config save/load

    digitalcircuit authored and Sput42 committed Jul 16, 2018
    Modernize CoreHighlightRuleManager to use the conventions of
    DccConfig, saving/loading via SyncableObject serialization handling
    for load/save.
    
    This simplifies the code and fixes highlight nick configuration
    (highlightNick, nicksCaseSensitive) not being persisted after core
    restart.
    
    Add some documentation, too.
    
    Fixes regression from 17c3921.
  8. client: Fix lost unsaved highlights on Import

    digitalcircuit authored and Sput42 committed Jul 16, 2018
    Save highlights before importing if changes exist to avoid losing
    any unsaved rules when loading the highlight rule list from the
    client.
    
    Test case:
    1.  Have at least 1 local highlight rule
    2.  Add remote highlight rule, don't save
    3.  Import local highlights
    4.  Unsaved highlight rule gets deleted
Commits on Jul 16, 2018
  1. chatmonitor: Always -> "Include ignored buffers"

    digitalcircuit authored and Sput42 committed Jul 16, 2018
    Change the display string for 'alwaysOwn' from "Always" to
    "Include ignored buffers", matching the option
    "Include read messages".
    
    No functional change, just minor UI tweak before string freeze.
  2. Chat Monitor: Add option to always include own messages

    heftig authored and Sput42 committed Jul 16, 2018
  3. ChatMonitorFilter: Refactor conditions

    heftig authored and Sput42 committed Jul 16, 2018
    No functional change.
Commits on Jul 15, 2018
  1. Attempt to improve the /LIST timeout for large lists

    genius3000 authored and Sput42 committed Jul 1, 2018
    Prior to this, the timer was simply running for 10 seconds from the
    start of the query; which could timeout even while data was being received.
    Large channel lists (i.e. Freenode) would over-run into the status buffer.
    
    Now we utilize QBasicTimer to create a timer that can be easily
    restarted everytime we receive a RPL_LIST. Inital timeout is 5 seconds
    and 5 seconds after each RPL_LIST. We also now remove the timer after
    receiving a RPL_LISTEND instead of letting it tick.
Commits on Jul 12, 2018
  1. common: Fix BufferViewConfig upgrade defaults

    digitalcircuit authored and Sput42 committed Jul 12, 2018
    Fix initialization of default values when upgrading BufferViewConfig.
    This solves the issue of showSearch() being set to true on upgrade
    despite having the default of false.
    
    Search doesn't usually need shown as the activate shortcut will make
    it temporarily appear.
    
    Details: When loading a buffer from configuration, the
    "fromVariantMap(properties);" path was taken.  As this side lacked
    the initialization, defaults weren't set for newly-added values.
    
    Thankfully, it really is just this simple (fingers crossed).
    
    Add some documentation love, too.
  2. client: /list automatically requests channel list

    digitalcircuit authored and Sput42 committed Jun 22, 2018
    When using "/list" or "/list <params" to open Channel List dialog,
    automatically request the channel list.  This mimics the behavior
    before the UI interception and minimizes effort needed to use the
    dialog.
  3. client: Set Channel List input focus, sort A-Z

    digitalcircuit authored and Sput42 committed Jun 22, 2018
    Set Channel List input focus to reasonable defaults.  When advanced
    channel search is visible, focus it.  Otherwise, focus the channel
    list filter box.
    
    Sort channel list by name in ascending order by default.  Sort order
    can be changed afterwards as before.
  4. client: Convert /list #chan to UI advanced search

    digitalcircuit authored and Sput42 committed Jun 22, 2018
    Pass "/list" parameters to ChannelListDlg when opening, allowing for
    "/list #channel", <Enter> to search in a similar fashion to current
    stable release.
    
    Add documentation to the showChannelList()/related functions.
    
    Prompt when "/list" is called without a valid network selected.  This
    fixes running "/list" before any networks are selected resulting in a
    channel list dialog that wouldn't do anything.
  5. logger: Refactor the logging framework

    Sput42 committed Jun 20, 2018
    * Rename the previous Logger class to LogMessage (since that is what
      it is), and consolidate logging functionality, including the
      various output methods, setup of log file etc., into a new
      Logger class.
    
    * Hold the "debug log", i.e. the collected log messages, in the Logger
      class instead of in the Client. Adapt the DebugLogWidget accordingly.
      Messages will not be kept in quasselcore, as we wouldn't have a way
      to display them otherwise (and we don't want to accumulate lots of
      data over months of the core running).
    
    * Support early log messages. Instantiate the Logger right at the
      start of main(), and keep all log messages until the Quassel class
      is initialized and we can rely on command-line options to configure
      backends accordingly. Accumulated messages will be output once the
      Logger is configured.
  6. qtui: Remove bogus Quassel instance

    Sput42 committed Jul 10, 2018
    A remnant from refactoring, QtUiApplication carried a useless
    attribute of type Quassel. This would of course create a second
    instance of the singleton, which is not a Good Thing™.
    
    Remove the bogus attribute to ensure that Quassel is only created
    once.
Commits on Jul 10, 2018
  1. client: Fix settings upgrade missing some steps

    digitalcircuit authored and Sput42 committed Jun 22, 2018
    Remove cache check in Settings::localKeyExists().  This fixes
    settings version upgrade wrongly skipping some steps due to earlier
    migration steps causing default values (not stored in .conf) to be
    loaded into settings cache.  Most notably, creating/writing the
    QtUiStyle settings Qt StyleSheet.
    
    The symptoms are only visible when migrating multiple steps at once,
    hence not catching this earlier.
    
    Bug originally introduced in d2ac8f7
Commits on Jun 21, 2018
  1. qtui: Remove remnant from debugging icon loading

    Sput42 committed Jun 21, 2018
    Good old eye...
Commits on Jun 20, 2018
  1. quassel: Install signal handlers in init() rather than ctor

    Sput42 committed Jun 20, 2018
    Unix signal handlers require e.g. command line options, which are
    not available at construction time of the Quassel instance.
    Move signal handler registration into init().
    
    Add TODO comments to remind us of the fact that we're not supposed
    to use unsafe methods in signal handlers (which we currently do),
    and should rework signal handling to be safe.
  2. client: Use sentence case for Core Info details

    digitalcircuit authored and Sput42 committed Jun 20, 2018
    Use sentence case for CoreSessionWidget `Version date:` and
    `Connected since:`, providing consistency with the core information.
    
    Use sentence case for `Connected clients:`, too.
    
    `Version date:` was the inconsistent one by majority, but (in my
    subjective opinion) it looks nicer.
  3. common: Make CommitDate Unix epoch, handle legacy

    digitalcircuit authored and Sput42 committed Jun 20, 2018
    Leave CommitDate (BuildDate) in Unix epoch format, converting it on
    demand when displayed.  This allows clients to localize the time
    shown.
    
    Add tryFormatUnixEpoch, which checks a string for Unix epoch, parsing
    as date/time if possible, otherwise letting the string through.  This
    avoids breaking protocol or any existing packaging scripts that set
    commit date to a string.
    
    Check for empty commit/build dates when using them, replacing with
    "Unknown date" or "unknown" as appropriate.  Don't encode this in
    Quassel::setupBuildInfo() to allow for location-specific treatment
    and client-side translation.
Commits on Jun 19, 2018
  1. Fix default port for integrated ident daemon

    mamarley authored and Sput42 committed Jun 19, 2018
    The value for the option identifier was missing, causing what was
    intended to be the default value to actually become the identifier
    and the default value to be undefined.  This resulted in random
    ports being chosen.
  2. core: Fix oidentd signal connection, cleanup

    digitalcircuit authored and Sput42 committed Jun 19, 2018
    Update OidentdConfigGenerator signal connections, adding the missing
    socketId added in commit 41b9d68 .
    
    This fixes a warning about signals/slots not matching up.
    
    Thanks to @genius3000 for finding this issue!
    
    Clean up line length and spacing while we're here.
  3. common: Use UTF-8 server encoding by default

    digitalcircuit authored and Sput42 committed Jun 19, 2018
    Switch to UTF-8 as default codec for server.  This fixes non-ASCII
    characters in /away messages and other situations silently being
    converted to question marks.
    
    Don't modify default Decoding codec as UTF-8 is automatically used
    there when needed.
    
    Update tooltips to offer guidance on restoring server encoding.
    
    NOTE 1:  If client is upgraded without core being upgraded, client
    will wrongly show UTF-8 as the default for server encoding.  The
    older core still uses the past encoding, and manually specifying
    UTF-8 as the selected encoding still works.
    
    NOTE 2:  This affects all networks that have not yet set a custom
    encoding.  A migration would require core-side in-database settings
    versioning and reading/writing from database.  It might be better to
    mention this on the release notes.
    
    This is a matter of trade-offs.  Invalid encoding can result in error
    messages or server disconnecting, confusing but noisy.  However, too
    limited of an encoding simply silently converts characters to
    question marks, in e.g. /away messages or nicks.  No warnings are
    printed.
    
    Is the IRC world ready for UTF-8 by default as a server encoding?
    
    Well.. that's hard to say.  This can be overridden per-network
    (even with an old client!), and this commit is also easily reverted.
    It's probably worthwhile trying in beta, reverting before release if
    too many things break.  IRC servers should at least provide error
    messages.
    
    (I personally think it's time to switch.  Partially since it took me
     1-2 years before finding out this is why I couldn't join UTF-8
     channels on a certain network.  And it's still confusing people
     today with e.g. non-ASCII in /away messages.)
    
    Thanks to @disconsented for bringing this issue to attention again.
    
    Test results for Freenode (a partially UTF-8 server network):
    > Before
    /join ##test♪
    [8:18:31 pm] --> digitalcircuit (...) has joined ##test?
    /nick digitalcircuit♪
    [8:19:06 pm] * No free and valid nicks in nicklist found. use: /nick <othernick> to continue
    [8:19:06 pm] * Nick digitalcircuit? contains illegal characters
    /away Now playing ♪ Songs to Test
    [8:21:11 pm] * You have been marked as being away
    /whois digitalcircuit
    [8:21:18 pm] * [Whois] digitalcircuit is away: "Now playing ? Songs to Test"
    
    > After
    /join ##test♪
    [8:16:57 pm] * 479 ##test♪ Illegal channel name
    /nick digitalcircuit♪
    [8:17:39 pm] * No free and valid nicks in nicklist found. use: /nick <othernick> to continue
    [8:17:39 pm] * Nick digitalcircuit�� contains illegal characters
    /away Now playing ♪ Songs to Test
    [8:21:46 pm] * You have been marked as being away
    /whois digitalcircuit
    [8:22:12 pm] * [Whois] digitalcircuit is away: "Now playing ♪ Songs to Test"
  4. Prepend current nickname if buffer has no name

    genius3000 authored and Sput42 committed Mar 29, 2018
    If the buffer name is blank, assume Status Buffer (or otherwise
    some un-named buffer?) and prepend our current nickname. Now
    shortcuts like '/mode +R' will work on ourself from the Status
    Buffer and doesn't interfere with current behaviour otherwise.