- The certifi certificate bundle is now generally prefered over the system-provided bundle if it's a recent version. The main rationale for this is that the Windows cert store is sometimes outdated. (https://github.com/Dpeta/pesterchum-alt-servers/pull/108)
### Fix
- Certain menu options not saving on mac. (https://github.com/Dpeta/pesterchum-alt-servers/pull/107)
- The wrong server list item sometimes being selected/removed if they shared the same 'server'.
- Audio on Windows not working because of a Qt6 regression, dependencies are now pinned to last working versions. [QTBUG-108383](https://bugreports.qt.io/browse/QTBUG-108383)
- Warning when running with elevated permissions. (admin/root)
### Changed
- Only send timeline on joins when time is not CURRENT, previously this could very easily trigger flood protection with large memos.
- Client no longer tries to get the mood of services bots via GETMOOD, as this would leak the fact that a user was messaging one of the bots. (nickserv/chanserv and the rest of the Anope suite)
- Error when loading an animated emote with Qt5, which is used for the win7 version. (https://github.com/Dpeta/pesterchum-alt-servers/issues/105)
- Handles being allowed to start with a number, this is an invalid nick in the IRC protocol and would prevent the client from connecting to compliant servers. (https://github.com/Dpeta/pesterchum-alt-servers/issues/103)
- Possible error when client-side ping function got called despite the client being disconnected.
- Unnecessary call to eval() to set memo userlist icon, which is a minor security risk if crafted input is fed to it. (don't think this was possible to actually abuse though)
- Support using [certifi](https://pypi.org/project/certifi/) for root certificates when available (https://github.com/Dpeta/pesterchum-alt-servers/issues/96 mitigation)
- Command-line options to skip prompts when building with pyinstaller.py
- Qt6.4 introduced a platform-independent FFmpeg backend for QtMultimedia, which is a useful alternative so GStreamer on Linux. As such, the audio backend/module preference and import attempt order is now:
- Windows/MacOS: PyQt6 QtMultimedia > PyQt5 QtMultimedia > pygame (used to be PyQt6 QtMultimedia > pygame, PyQt5 QtMultimedia was never imported)
- Linux/Unknown: PyQt6 QtMultimedia > pygame > PyQt5 QtMultimedia (used to be pygame > PyQt6 QtMultimedia > PyQt5 QtMultimedia)
- Disabled the console for now since no one seems to use it and it caused an issue on import.
- Logging.config/configparser logging configuration, not aware of anyone that actually used this. Logging level can still be specified with command line arguments. (-l --logging)
- Support for "CLIENTINFO", "PING" and "SOURCE" CTCP messages.
- Support for a "GETMOOD" CTCP message which causes the client to return its mood. Currently this isn't used for anything.
- Limited support for IRC metadata as defined by the [temporary draft specification](https://gist.github.com/k4bek4be/92c2937cefd49990fbebd001faf2b237).
- Client now sets its own 'mood' metadata key to its mood. (``METADATA * set mood [mood_num]``)
- Moods are now received via ``METADATA * SUB mood`` and retrieved via ``METADATA [handle] GET mood`` by default, unlike the current GETMOOD PRIVMSG system, this doesn't have the potential to leak your chumroll, trollslum, and people you message to IRC onlookers.
- If the server returns ERR_KEYNOTSET, ERR_KEYNOPERMISSION, or ERR_NOMATCHINGKEY, the requestee is probably running an older client, in which case a normal GETMOOD PRIVMSG is send.
- If the server hasn't confirmed support for METADATA via ISUPPORT, the GETMOOD message is used after a small timeout.
- Limited support for [message tags](https://ircv3.net/irc/#message-tags). The client requests the capability by default and strips unused tags.
- The only supported message tag currently is the '+pesterchum' client tag, which requires a server module for UnrealIRCd to forward it: https://github.com/Dpeta/pesterchum-tag. The tag has its own capability which is always requested from the server. If the server supports the module an alternative to the usual ``PESTERCHUM:BEGIN``, ``PESTERCHUM:CEASE``, ``PESTERCHUM:BLOCK``, ``PESTERCHUM:TIME``, and ``COLOR >`` PRIVMSG can be send to the client in the form of a [TAGMSG](https://ircv3.net/specs/extensions/message-tags#the-tagmsg-tag-only-message).
- If enough clients support this, it might be feasible to use this as the default method. Unlike the usual PRIVMSG, the tag is only send to clients who have negotiated the message-tags and pesterchum-tag capability with the server and thus support it, so it won't show up as garbage for IRC users.
- Unreadable input on MacOS and certain linux distros for themes which didn't explicitly set input color (incl. pesterchum), input color is now black by default instead of being platform-dependent.
- Some accidental redefinitions. (modesUpdated function got overwriten by modesUpdated QtCore.pyqtSignal, 'time' module got overwriten by 'time' variable, etc.)
- A few broken conditions that didn't usually occur.
- RPL_CHANNELMODEIS function missing the mode_params parameter. (Pesterchum doesn't actually do anything with it, but previously it'd cause a crash when the server tried to pass it.)
- Made file capitalization consistent for a few files. (.PNG --> .png), because some file systems are queasy on that, and it wasn't working on Debian. (See https://superuser.com/questions/881804/case-sensitive-file-extensions-in-windows-and-linux)
- Removed feedparser.py (feedparser) and magic.py (python-magic) from libs and changed them to be normal imports. (Because we're not running Python 2 anymore)