4.1.0
-----

RSS Guard now has its own DISCORD: https://discord.gg/7xbVMPPNqH

Special thanks to @akinokonomi who helped with this release and made world a better place to live our lives!

Added:
* Network communication of RSS Guard now shares cookies and user-agent with bundled WebEngine. You can thus access cookie-protected resources in RSS Guard, including feeds. (#556)
* Confirmation dialog is displayed when removing article filter. (#562)
* Use "QSoundPlayer" for better support when playing notification sounds, no GStreamer required now. (#551)
* New default skins with light/dark variants, Nudus. Thanks to @akinokonomi for amazing job. Nudus is lightweight skin with maintainable code base. Note all other skins will be removed in next release as it is difficult to provide reasonable support for them. (#540)
* Optionally display only time (without date) for today's articles. (#530)
* Icon size of toolbars is now configurable.
* More web attributes added to web viewer context menu.
* Use more standard user-agent.
* Tens of minor tweaks added.

Fixed:
* Expanding/collapsing of categories is now properly persistent and behaves more correctly when filtering feed list in some way. (#546)
* No more crashing after "mark item as read" action. (#563)
* Deal with spaces in feed URLs. (#542)
* Fix crash in Greader plugin. (#539)
* Fix cleaning up of database when clearing articles older than 0 days.
* Finally solving issues with remembering article list/viewer splitter position. (#517)
* Update some hyperlinks, use correct terminology. (#536, #537)
* Make "article list row height" work as intended. (#528)
* Localizations synced.
* Application now closes correctly on Linux, if tray area is not available and tray icon is mistakenly still "enabled".
* Server JavaScript file of Adblock is now copied to destination properly.
* Regex filtering and "show unread only" features now work together in feed list.
* Node.js "NODE_PATH" value is now determined in runtime, not hardcoded.

4.0.4
-----

RSS Guard now has its own DISCORD: https://discord.gg/7xbVMPPNqH

Added:
* Updated documentation. (#516)
* Sizes of horizontal/vertical width/height of article preview are now kept separately. User can thus have different sizes of article preview in each layout. (#515)
* Added new simplistic skin "nudus". (#512)
* Article filters now can determine "uniqueness" of article according to article's "id". (#509)
* Some columns in article list now also display respective values in tooltips. (#513)
* Columns "read" and "important" in article list are now resizable. (#514)

Fixed:
* Avoid unwanted displays of article previewer. (#507)
* "Automatically expand item when selected" now behaves consistently when launched with keyboard shortcut. (#506)
* Fixed multiple issues regarding article "focus" or "selection".
* Fixed some problems with recognizing filenames when downloading files.
* Fixed crash when repeatedly downloading some files.
* Tweaked some icons.
* Fixed executable bits on some deployed files.
* Updated skin "API".

4.0.3
-----

Added:
* Now it is possible to disable hardcoded keyboard shortcuts in feed/article lists so that user-defined single-stroke shortcuts can work properly. (#484)
* Skins were reverted to 4.0.1 as they were very buggy. Previous skins were stable and will be used for time to come. I will make brand new polished skin in some next release which will not replace existing skins but will be added.

Fixed:
* Settings dialog now remembers its size and also adds scrollbars where needed. Also was polished a bit. (#493)
* Icon of "standard RSS/ATOM/..." service/account was updated to be "RSS" icon, not "RSS Guard" icon and also is preselected in "Add account" dialog.
* Updated documentation and translations.
* "Written by" bottom section of article preview now uses same date/time format as article list.
* Code refactored.
* Icons are now properly loaded when fetching list of feeds in Tiny Tiny RSS.
* Inline article searching now uses much smaller delay after typing search phrase.

4.0.2
-----

Added:
* Documentation now contains section for DIY migration of data from RSS Guard 3.x line.
* Updated localizations.
* Notification sounds now have adjustable volume. (#488)
* Searching in articles is now performed with delay after search expression is typed. (#485)
* Big account "edit" dialogs now have scrollbars if they are too big to fit on screen. (#483)
* Both built-in skins now use same Pico.css CSS library and have unified look for both light and dark variants (except of dark colors of course).

Fixed:
* Gstreamer libraries are now bundled into AppImage version of RSS Guard.
* Feedly now fetches messages correctly, no more message disappearing, related algorithm for article DB storing was also updated. (#487)
* AdBlock local Node.js-based server now has only really needed dependencies.
* Fixed problem with linking "librssguard.so" on some Linux distributions. (#486)

4.0.0
-----

4.0.0 is new major release of RSS Guard. RSS Guard 4.x is NOT backwards compatible with 3.x line. Specifically:
* configuration file "config.ini" IS fully backwards compatible,
* database file "database.db" is NOT backwards compatible.

You may ask why is there new major version and why backwards compatibility is broken:
* I needed to completely overhaul some of core concepts inside RSS Guard.
* Database structure in file "database.db" was very complicated and hard to maintain and had to be simplified. Number of database tables was greatly reduced and whole structure is easier to follow.
* Source code was greatly simplified in many places which makes RSS Guard easier to maintain and easier to develop new features.
* Also, and this is potential killer feature, new changes allowed implementation of "next-gen" synchronization algorithms which may, in some cases, dramatically speed-up two-way synchronization of articles. This new synchronization algorithm is right now implemented and enabled for Google Reader API plugin as PoC and it is called "Intelligent synchronization algorithm" within RSS Guard. The algorithm will be implemented for other plugins over time.
* There is crazy number of new features and bugfixes. See list below.
* Also, let me say some more extra points:
    * More than 4 000 code changes were made in total during RSS Guard development. Codebase consists of 38 500 lines of C++ code.
    * First version of RSS Guard was published 8 years ago.
    * RSS Guard is one-man project, I have implemented it on my own. 99% of code is written from scratch.
    * Received donations for RSS Guard were under 100 USD in total.
    * If you feel that RSS Guard is slow, broken or shitty application, then you are probably right. Nonetheless, you should still submit well-structured and sane bug report, so that I can actually fix the issue! If you do not submit bug report, then please do no spread lies about how bad RSS Guard is and switch to another feed reader instead. 

Added:
* Brand new notifications subsystem added. It can play sounds, individual events are independently configurable in application settings. (#356, #144)
* "MessageObject" class now exposes "rawContents" property for message filtering. Property contains raw RSS/ATOM/JSON contents of the message. (#377)
* URL-embedded cookies are now supported, as well as classic cookies, which are now saved in non-persistent cookie jar. (#391)
* "Next-gen" synchronization algorithms which may, in some cases, dramatically speed-up two-way synchronization of articles. This new synchronization algorithm is right now implemented and enabled for Google Reader API plugin as PoC and is called "Intelligent synchronization algorithm" within RSS Guard. The algorithm will be also implemented for other plugins in the future.
* Google Reader API plugin supports "ot" option.
* Documentation was completely rewritten.
* Fixed support for OS/2.
* Optional notification for login failures.
* Improved bug report templates (PR by sakkamade). (#467)
* Properly implement "feed://" scheme to be able to "open" feeds from web browsers etc. (#390)
* Added "Unread messages" node to feeds list which now centralizes access to all unread messages. (#384)
* New search box for feeds list toolbar which now allows users to search/filter feeds list. (#380)
* Ability to show nothing instead of message count in feeds list if count is 0. (#385)
* Added button to feeds list context menu to expand or collapse items (recursively). (#344)
* MSVC runtime libraries are now directly included with RSS Guard. (#400)
* Message/feeds list tooltips are now switchable. (#404)
* Old AdBlock implementation was replaced by new modern JS/NPM-based solution "Adblocker". (#410)
* RSS/ATOM/JSON parsers were updated to avoid some parsing errors. (#412)
* Google Reader API plugin is greatly enhanced, has better support for TheOldReader.
* Inoreader plugin was merged into Google Reader API plugin as Inoreader too uses Google Reader API.
* Toolbar search boxes have now dynamic width. (#431)
* Visual state of some dialogs is now remembered, for example "Cleanup database".
* Some GUI texts and terms were unified and changed (message -> article, download feed -> fetch feed, etc.). (#430)
* There is now some default filename set when exporting feeds to file.
* Number of unread messages is now shown on Linux also in taskbar (not just tray icon). (#437)
* Unified minimize/maximize/close window buttons in all RSS Guard dialogs. (#439)
* Most of text boxes now have "clear text" button. (#438)
* Feeds with disable auto-fetch policy now do not update on application start-up. (#444)
* Notifications with new messages is now only launched if there are NEW UNREAD messages. (#440)

Fixed/changed:
* RSS Guard can be correctly "killed. (#466)
* Database file "database.db" now not stored in redundant "local" subfolder.
* Expand state of "Labels" item is now remembered.
* Example scraper "translate-feed.py" now can translate ATOM feeds too.
* External tools now can be used with any hyperlink.
* Account's folders/feeds are resynchronized when "Edit" dialog exits only when really needed.
* Fixed problems related to custom order (and sorting) of columns in article list.
* Qt stylesheet from skins is now not loaded if there is already loaded some external stylesheet.
* Local-only labels/tags are now note removed when performing folder synchronization of the account. (#465)
* Progress bar in "Import/Export feeds" dialog was misleading and show invalid progress. (#379)
* Feeds were not correctly re-sorted by titles after some feed is renamed. (#387)
* "Select next unread message" feature produces some exotic message list scrolling. (#389)
* Application was not able to synchronize unread messages with Reedah. (#382)
* Fixed some repeated notifications when feed gets new articles. (#329)
* Fixed some article formatting in embedded web browser. (#403)
* Fixed crash in "Message filters" dialog. (#420)
* Fixed main window problem when hidden with tray icon activated in Linux/KDE. (#418)
* Font size in article previewer is now properly configurable. (#421)
* Added some missing icons. (#425)
* Improved some visual glitches in dialogs and skins. (#426)
* "Keep message selection in the middle" now works in a more reasonable way when trigerred with mouse vs keyboard. (#427)
* Fixed GUI behavior of "Database cleanup" dialog. (#433)
* "Bring application window to front once article is opened in external web browser" is now disabled by default. (#447)
* Fixed cooperation of "Next unread article" + "Keep message selection in the middle" features. (#435)
* URL of feeds are now sanitized before making a network request. (#450)
* All pictures from feeds should be now properly displayed. (#422)
* Completely overhauled the logic of detecting existing articles and updating them. (#451)
* Fixed problem when multi-column sorting was mistakenly activated when article list is reloaded after feed is fetched. (#453)
* Monochrome icon was adjusted a bit. (#458, @sakkamade)
* Fixed feeds list scrolling when feature "Next unread article" is activated. (#459)