4.8.6
-----

Dear users. This is (probably) the last release from 4.x line of RSS Guard.

I had a looong thinking about current state of RSS Guard. You see, when I was starting the whole project, I wanted it to be reliable, relatively fast, stable, simple use but with advanced features, maintainable. Somehow, we got lost in the process. RSS Guard relies on the number of external libraries, mainly Qt ones like QtWebEngine, QtWidgets, QtNetwork, but also SQLite, MariaDB etc.

Every long-standing bug in any of these impacts RSS Guard as well. RSS Guard is obese and too big. It tries to do too many things and arguably does not do some of them too well.

So I made some decisions and started working on new main line of RSS Guard. It will have initial version 5.0.0. Main note for all users of RSS Guard is that all your 4.8.x data will be compatible with it, so if you will want to switch to RSS Guard 5.0.0 when it comes out, you can (you will just need to copy your files over).

Now, let me major things that will change (and yes, some of you might be sad, but that is just how it is):
* complete removal of all web-browsing capabilities
* complete removal of some major external dependencies like NodeJS
* removal of AdBlock
* removal of internal download manager
* removal of many other smaller things which are not directly related to "feed reader" features

Big chunk of RSS Guard source code is (or will be) removed and that allowed me to make source code base more maintainable. Note that some dropped features will actually be replaced and should be more working than before. I plan to add compiled version of module which would be able to automagically fetch full articles for each feed - this is currently solved by NodeJS-powered addon which is honestly painful to setup.

Also, all builtin skins will be removed and new default skin is being implemented. It will be simpler, visually neutral and should just work.

I already made like 150 commits of work and there are several months at best before the 5.0.0 comes out. You can see the in default "master" branch of RSS Guard source code base. Also, note that I will go through entire list of reported issues and will remove all which request something related to remove code and also all issues which request features which I cannot realistically implement and/or are feasible or whatever. Note that if anyone wants to contribute in any way, pull requests are welcomed for sure.

There are people who regularly contribute and some of them do actually amazing work. Big thanks to them.

https://github.com/martinrotter/rssguard/commits/master/
https://github.com/martinrotter/rssguard/milestone/39

Added:
* Ability to turn off/on font anti-aliasing for the whole app. (#1691)

Fixed:
* Random QThread-related crashes. (#1654)
* Article list/viewer behavior when feeds with very long descriptions are selected. (#1755)

4.8.5
-----

Added:
* All dropdown filters (for both feed and article lists) can now be assigned to keyboard shortcuts.
* "Add account" dialog was bit updated.

Fixed:
* Fixed unwanted "feed error" dialog, now properly configurable.
* Fixed text-based filtering for feed list (sorry).
* Dropdown feed list filtering now properly filters out categories and labels too.
* Selected item behavior when filtering is enabled was refined.

4.8.4
-----

Users, this is one of the last RSS Guard releases from 4.x line. There might be more releases from 4.x but only bug-fixing ones.

I will start working on new RSS Guard which will have many differences from current one and will aim to return to original goals of the application:
* simplicity
* good features
* speed
* stability

Some features will be removed and while some of you will likely not be that happy, note that all this will help to keep RSS Guard development going in the future, ensuring we have maintainable, solid, expandable application. The development of RSS Guard is hugely understaffed. It is basically one-man project with some help of individual contributors.

Fill this survey, please: https://forms.gle/3CZm95W6vrBLfi5K9

Added:
* Notification when feed fetch fails was added. (#1698) 
* Application can now start in minimized state even without tray icon being enabled. (#1713)
* Columns in feed list are now resizeable. (2ed50e55f)
* Feed list now also offers filtering dropdown toolbar button. This allows easy filtering of feed list the same way as article list already does. (542ae73b2)
* User can now explicitly disable showing of modal dialogs depending on notification type. (83fed6b7c)
* Added option to manually reload active skin without restarting the app. (01bc5a713)
* Unread article dot color is now taken from active skin. (c68e545ea)

Fixed:
* HTML formatting was kind of broken for some specific feeds including bracket symbols. (#1692)
* AdBlock was not sometimes working. (#1702)
* Fix blank window upstream bug when doing specific stuff with tray icon. (#1672)
* Export folder for database/configuration files is properly  remembered. (#1667)
* More forgiving OPML parsing. (#1688, #1719)
* Clear `eTag` headers when feed is purged. (2e9d26edc)
* OpenSSL Qt plugin is properly copied. (c3911bd0b)

4.8.3
-----

Added:
* Application is now "self-signed" on Mac OS X. (#1679)

Fixed:
* Missing icons in some use-cases. (#1683)

4.8.2
-----

Added:
* Added feed fetching throttle control: (#1154, #1322)
    * `Too many requests` HTTP codes are now recognized and respected by RSS Guard.
    * There is new per-account setting `Feed fetch spacing` which performs intelligent delaying of subsequent feed fetching from identical remote hosts, trying to avoid aforementioned errors/bans for making too many network requests in short time windows. The setting should be set to value low enough to avoid those kind of errors but still having good UX.
* Custom color option for disabled feeds. (#1652)
* Strikethrough for disabled feeds is optional. (#1651)
* Ability to fetch feed icon from user entered URL. (#1645)
* Application now remembers last used folder from any of its open/save file dialogs. (#1643)
* HTTP/2 is now switchable on a per feed basis. (#1615)
* Now duplicate keyboard shortcuts cannot be assigned. (#1605)
* New option for colored/monochrome icons for tray icon. (#1603)
* Article list filtering options are now persisting. (#1590)
* Official binaries now use Qt 6.8.3.

Fixed:
* Enhanced QSS for tooltips for better readability. (#1637)
* RSS feed encoding detection was prone to errors. (#1664)
* `Localization` page now displays correctly. (#1611)
* MariaDB backend now uses `MEDIUMTEXT` column to allow bigger articles.

Removed:
* Built-in Google API OAuth credentials are now REMOVED from official RSS Guard binaries. There are several reasons for this, including the fact that these credentials had low usage quotas, therefore were not suitable for bigger number of users. So now each user has to obtain his own client ID/SECRET from Google Cloud Platform (which is free for personal usage).

4.8.0
-----

RSS Guard is feed reader and podcast player and now also becomes [Gemini](https://geminiprotocol.net) client! Spread the word!

Added:
* Support for Gemini protocol and gemtext markup files. (#1550)
* It is now possible to pause feed fetching. (#970)
* Reddit URLs are now parsed during feed discovery and found feed links are processed. (#1530)
* YouTube URLs are now parsed during feed discovery and found feed links are processed. (#1532)
* Click article icon in article list now switches read/unread state, the same way as clicking "starred" icon works. (#1521)
* Some RTL-related things were added. (#1371)
* User can now manually specify custom HTTP headers to be sent when fetching individual feeds. (f1d5c7d)
* Sounds of notifications can now be individually switched off. (6fa233f1e)
* Image caching in built-in LITE web viewer now takes image size into account, thus providing better scaling and visual UX. (4e698c983)
* In "Discover feeds" dialog, when mouse hovering above found feeds, more info is shown in tooltips. (5664b39e6)

Fixed:
* Compilation with MinGW compiler is now working without problems. Also MSYS2-FHS-related changes were applied. (#1540)
* Reduce number of duplicate feeds found in "Discover feeds" feature. (793cbcbf5, 78dc97f23)

4.7.4
-----

Added:
* Working threads for fetching feeds now have their priority lowered to "low". This will likely lead to better GUI responsiveness during feed fetching with minimal to no performance loss. (#1497)
* User-agent now can be set from settings. (#1471)

Fixed:
* JavaScript alerts are now shown in a better way.
* Removed some debugging code. (#1506)
* Node.js settings section "Browse" buttons now work correctly. (#1483)
* Article filters now should not be assigned twice (or more) via GUI. (#1503)
* Crash in built-in file downloader should be fixed. (#1495, potentially #1485 and #1487)
* Fix wrong SQL code. (#1489)
* Toast notifications are now disabled on Linux/Wayland because Wayland does not support these. (#1494)
* Fix some monitor-related bugs by updating Qt to newer version. (#1479)
* Tweaked `<img>` extraction. (#1477)
* Added more supported date/time formats. (#1478)
* Langs updated.

4.7.3
-----

Added:
* Localizations updated.
* Mac OS 13 is now used to build Mac RSS Guard version.
* Added Reddit plugin. At this point, this is WIP (!). The plugin will be eventually greatly enhanced in the future, but no ETA. Currently the plugin can do:
    * OAuth authentication.
    * Loads list of subscribed subreddits.
    * Loads list of newest topics from each subreddit.

Fixed:
* Plugin libraries are now loaded more properly, specifically they should not be loaded more than once.
* Time.com feeds were not properly rendered. (#1450)
* Drag and drop operations were fixed, although there are some cases where you have to adjust the process, for example when dragging an item "after" the last item in top level.

4.7.2
-----

Fixed:
* Some non-lite installation packages were wrongly named. (#1426)
* Plugins were loaded multiple times. (#1427)

4.7.1
-----

OK, this is mainly bug-fix release. In the close future (months), expect only bug-fixing releases. Again, we need to make RSS Guard rock stable.

Added:
* Nothing really.

Fixed:
* Fixed detection of plugins which was broken due to wrong plugin search path. (#1416, #1420)
* If "Show unread only" article list filter is active and you select article (which then gets marked read) and then feed is fetched, currently selected article does not suddenly disappear from the list. (#1415)
* Selected "style" was disappearing from settings dialog even thought it was correctly saved into settings. (#1408)
* Right-clicking article selects it (and displays its contents) but does not modify read/unread state. This behavior was corrupted in previous release, therefore we just return to old good behavior. (#1410)
* XML parser now allows leading and trailing blank lines when loading XML of feeds. (#1403)
* Date/time parsing was further enhanced, although there are some connected issues which will be hunted in the future.
* Qt5/Windows builds will use only qtmultimedia media player backend because libmpv dropped Windows 7 support.
* Fixed "About" dialog RSS Guard information formatting.

4.7.0
-----

OK, dear users. Over recent releases, many features were added and as you can see RSS Guard bug tracker is full of (semi) bug reports which need to be addressed. Therefore I must declare feature-freeze for at least three upcoming releases. No new features will be added in forthcoming future, because RSS Guard codebase must be de-bugged and stabilized first. I will keep my word this time and no feature requests will be implemented.

Sole focus will be on fixing bugs and polish existing features and clean codebase. The other reason for this is also that lately my free time had become much much more limited for many reasons - family, other hobbies, work around house etc.

Added:
* Full article content can now be fetched with a single button. Button is placed in article viewer toolbar right next to "Reader mode" button. This feature (just as "reader mode" feature) requires Node.js installation. The feature works both for articles and for regular websites opened in embedded web browser.
* Article now can be marked (upon selection) as read with delay or only manually. (#1017)
* All RSS Guard plugins/services are now placed in their own library (DLL/SO/DYLIB) files and are loaded by main RSS Guard library dynamically. This means that unused services can now be removed from RSS Guard installation if not used by the user. Also it allows for a cleaner and slimmer common codebase. Refactoring of main RSS Guard library was also done and it is now more usable as regular dynamic-link library. I expect some regressions as this was HUGE change. Also, this change allows new potential interested people in writing new plugins easier as they now can just copy one of existing plugins and tweak for new service. Also this change now propagates to RSS Guard installer which allows you to only install plugins/services you want.
* Application (Qt) style and icon theme now can be properly set to respect system style/icons and this setting is dynamic, meaning if you change system theme and restart RSS Guard, new theme is honored. (#1352)
* Button to copy system/app information to "About..." dialog. (#1318)
* All modal dialogs now remember their sizes forever. (#1336)

Fixed:
* Removed debugging forgotten code. (#1354)
* "Cleanup" button in downloader was greyed out when it should not be. (#1350)
* App crashes when changing notification sound. (#1317)
* Built-in user-agent was updated. You can also supply your own user-agent, see `rssguard.exe --help` for more info.

4.6.6
-----

Fixed:
* Some build problems and regressions are now fixed, sorry for this.

4.6.4
-----

One bigger new thing, dear users: I decided to start implementing brand new purely command line only version of RSS Guard to allow running RSS Guard in headless/CLI environments like servers. It will likely work like this:
1. You run regular variant of RSS Guard and setup your feeds, how often they fetch like you normally do when running classic GUI RSS Guard.
2. You then can launch new CLI-only RSS Guard executable perhaps on your server (or elsewhere) and it will load your settings/database and will perform article fetching regularly.

Added:
* Existing read/unread state is respected when some article gets "updated" (infamously happens for YouTube feeds). (#1279)
* NSIS installer was bit tweaked to warn about MSVC runtime. (#1306)
* iCalendar files (*.ics, *.ical) are now supported. Note that the support is rather basic.
* Added more ways of limitting amount of articles in each feed. (#1270, #1267)
* Added way to use old legacy article formatting in "lite" version. (#1286)
* New way of fetching articles - new "Source" -> "Built-in web browser with JavaScript support" which allows user to use built-in Chromium-based network stack to fetch feeds and other data. It allows even fetching of majority of JavaScript-powered websites. (#1313)
* More date/time strings for parsing some dates and times in articles.
* "Title" column in article list is not directly resizable too. Last visible column auto-stretches to fit remaining space. (#1319)

Fixed:
* Fix freezing when feed uses crazy crazy loooong URL.
* Fix crash when forwarding e-mail via Gmail plugin.
* Add forgotten restriction when cleaning data. (a975714f6)
* ETag conditional loading of feeds was semi-broken. (#1314, #1296)
* All Unicode characters in feed URLs are now supported. (#1310)
* Reader mode was changing content for all opened browser tabs. (#1300)
* Some articles were displayed with broken HTML. (#1293)
* Size/position of all windows (including modal dialogs) is now guarded to not be out-of-screen-bounds. (#1281)
* No more crashes when adding some discovered feeds. (#1280)
* Main window pesky splitters saved with 0 position. (#1271)

4.6.3
-----

Dear users, there are new features which will be introduced in one of coming releases.

First of them is built-in HTTP API server which will provide basic REST-like interface for working with RSS Guard - getting list of articles, marking articles read or unread, etc. This will allow to use RSS Guard as a article server in local network.

In cooperation with the above feature, new "magazine view" will be implemented. This magazine view will be launchable even completely separately from RSS Guard in web browser and will be able to act as very simple web-based feed/article reader. It will fetch data directly from RSS Guard via its new web API and will display articles including their thumbnails in cool way. This feature will be also expanded in the future, based on user feedback.

Added:
* Lite internal web browser now properly decodes all HTML pages according to their declared encoding. (9c7f55094)
* Image downscaling in lite browser is faster. (8b91d4709)
* Icon for classic RSS/ATOM accounts is now changeable. (#695)
* If main window is active then "fetching started" notifications are not delivered. (#597)
* Number of child feed/categories is now shown for each category. (#1183)

Fixed:
* MPV libs were moved to separate Git submodule. (#1250)
* Applied workaround to fix PC not sleeping after sound is played. (#1118)
* Fixed problem with disappearing tabs.

4.6.2
-----

This release fixes couple of issues found after 4.6.0/4.6.1 releases.

Fixed:
* Fixed "Browse" button not working in "Media player" tab of settings dialog. (#1245)
* Was crashing on Linux. (#1244)

4.6.1
-----

Fixed:
* Fixed some compilation problems and related issues.

4.6.0
-----

This feature brings one major feature - podcast/media player. This media player is available when you open context menu for any hyperlink in article which you think leads to audio/video file. Simply right-mouse-click your link and select "Play in media player", then media player will open in next tab and start playing.

Full versions of RSS Guard (with QtWebEngine) include libmpv-based media player which can play basically every thinkable audio/video content. Windows build of RSS Guard even bundles yt-dlp binary to allow out-of-box support for Youtube playback.

Lite variants of RSS Guard include slightly lighter QtMultimedia/ffmpeg-based media player, which also can play many audio/video formats.

Qt5-based lite variants of RSS Guard will likely require you to install some system-wide codec pack.

https://github.com/martinrotter/rssguard/issues/1226

Added:
* Media/podcast player capabilities. See above for more information.
* Indication of which feed is actually fetching at the moment can be enabled in settings. (#1203)
* Newspaper view was removed as it was slow and very buggy. It might be replaced by something better in the future.
* Sections of settings now have icons.
* Docs updated.
* Layout of articles in default nudus-* skins was unified for full/lite versions. Formatting is now very similar.
* Image size/wrapping behavior was greatly improved in article viewer, particularly in lite version.

Fixed:
* Context menus in both full/lite article viewer are now more similar.
* Fixed crashing when editing e-mail via Gmail plugin. (76c7dd170)
* No more warning journal messages generated on Linux. (#1207)
* Updated and fixed some languages. (#1205)

4.5.5
-----

Added:
* Added feed manipulation for Google Reader API plugin - creating, editing, deleting feeds.

Fixed:
* Fixed yellow background in nowebengine version.
* No more double right mouse button click when closing notifications.

4.5.4
-----

Added:
* Toast notifications now have configurable width, margins and opacity. Couple of related GUI fixes are also there. (#1125)
* Standard RSS/ATOM account now can be renamed. (#824)
* Aux nodes "Important", "Probes", "Unread" and "Labels" now can be disabled per-account separately in account settings dialog. (#584)
* Toast notifications can be closed with right mouse button click.
* Google Reader API plugin now offers OPML import and export function. See context menu for it.

Fixed:
* Updated translations.
* Fixed integration with Miniflux via Google Reader API plugin. This requires additional testing. (#837)

4.5.3
-----

Added:
* Article and feed toolbar heights are now normalized to same values.

Fixed:
* Fixed couple of cases where feed multi-selection and/or batch operations were not taking multi-selection properly into account.
* Fixed some unnecessary prompts to restart app in settings dialog.
* Updated translations and readme.

4.5.2
-----

Dear users. Note that one of upcoming releases will break-backwards compatibility thus it will be labelled as "5.0.0". Backwards compatibility will be broken in several areas of the application - particularly I want to greatly enhance syntax/API of article filtering scripts, where I plan to restructure existing functions, make it all bit more clear and add some more functions.

Also, some other areas of RSS Guard might be touched so I will use the opportunity to make again some enhancements. I do not expect that DB incompatibility will be as high as it was when transitioning from 3.x to 4.x and I expect that existing RSS Guard databases will be converted to "5.x" format automatically.

Moreover, I thank to all users of this app. Currently according to my internal "guess" I believe that RSS Guard has 5000+ regular users and it is likely one of the most used RSS desktop cross-platform applications. I hope we will grow and I also send big thanks to all who donated some money. It is not much, but I have used some of it to buy parts for my home PC on which I develop RSS guard mostly. Thanks.

Btw, just thinking out loud. If each user contributed 5 USD per year, I could do RSS Guard development as my full-time job, which I would love to. :D

That's all I wanted to say. Thanks, users.

Added:
* Added new "Discover feeds" dialog which is automatically opened when user hits "Add new feed" button. In this dialog, use does not have to input exact feed address but can enter just regular website address and RSS Guard will try to discover all available feeds possible. (#1134)
* ATOM/RSS/JSON/Sitemap feeds now automatically use "ETag" HTTP headers which has potential speedup when fetching feeds with no new messages. This can bring 10-80 % speedup if user uses more feeds which do support "ETag". (#1136)
* Support for Sitemap "sitemap.xml" files is added! Vast majority of websites have sitemaps and RSS Guard now can read them in the same way it does with RSS/ATOM formats. "Discover feeds" dialog has Sitemaps support integrated and it even is able to traverse sitemap indexes. GZipped sitemaps are supported too. (#1129)
* Added multiple/extended selection to feeds list! Now it is possible to select multiple items at once (feeds, categories, etc.) and perform batch actions on them - batch editing, deleting, marking read/unread, re-sorting - when some feeds are selected it is now in "Edit selected items" dialog possible to batch change only some properties in a very clean and universal way. (#1010, #89)
* Localizations updated.
* Documentation updated.
* Arguments parsing is now totally overhauled. It is now possible to use both double and single quotes to quote arguments. Read "Scraping Websites" chapter in [docs](https://rssguard.readthedocs.io/en/latest/features/scraping.html#scraping-websites) to know more.
* Local files can now be used directly as sources for feeds, just select "Local file" in add/edit feed dialog.

Fixed:
* Fixed OPML import/export when some feeds use custom script as source. (#1133)
* RSS/ATOM parsing is now greatly enhanced.

4.5.1
-----

!!! [Documentation](https://rssguard.readthedocs.io) was migrated to ReadTheDocs platfotm and some parts of it were updated !!!

Added:
* Completely new, custom "toast" notifications:
    * Configurable position on screen.
    * Can be displayed on secondary screens.
    * Automatically adopts look of currently active RSS Guard skin.
    * Can be close via close corner button or via `Esc` keyboard button.
    * When hovered with mouse, notification stays shown, when not hovered, it is automatically hidden after 15 seconds.
    * Displays list of newly fetched articles and offers some basic actions like marking as read, showing in article list or in web browser.
    * These notifications do not need "tray icon" to be activated.
    * Can be tweaked in `Notifications` section of settings.
* `pdb` debugging file is now distributed with RSS Guard on Windows.
* NPM packages updated to latest versions.

Fixed:
* AppData file now does not contain `<pre>` tags.
* HTTP redirection cycles are now solved.
* Web cache is now stored in correct directory on Linux. (#1098)
* Fixed behavior of Google-based phrase suggestion in web browser navigation text box.
* Many different features of RSS Guard got minor fixes, some parts of source code were refactored. Particularly, one nasty "semi-bug" was fixed which influenced speed of article switching in article list. It should now be faster. Much faster.
* Article counting for "regex queries" is now disabled because this was very performance-hungry even with small number of regex queries, sadly.
* Translations of some languages are now more complete.
* Some unused source code was removed.
* Some unused deps were removed.

4.5.0
-----

!!! Note that at this point, NO new features will be added for at least 4-5 new releases as I must concentrate on fixing bugs and polishing already existing features !!!

Localizations are now translated via Crowdin: https://crowdin.com/project/rssguard

Added:
* List of article filters assigned to feed is now visible in feed details pane. (#1045)
* Right-to-left optional layout for feeds/articles. You can switch this in each feed properties.
* Gmail: Labels are now fetched from the service too and they are synchronizable.
* New feature called "regex queries" allowing users to have (persistent) regular expression based article list filters. See your feed list for "Regex queries" item and right click to add one.
* "reader mode" feature now uses skin-based format & colors.
* All features which generate random colors now use better HSV-based algorithm.
* Added application-wide and feed-wide ability to limit articles based on article date/time. This can be changed in application settings in "Feed fetching" section and in feed properties dialog in "Articles" section.
* JavaScript code of article filters now has syntax highlighting.
* Use non-standard "url" element as fallback for article URLs in RSS format.
* Percentages of localization progres for each translation is now shown in "Localization" settings section.
* "clang-format" updated.
* User CSS styles can now be supplied via file `<user-data-folder>/web/user-styles.css`.
* When fetching metadata during OPML import, there is now option to NOT fetch icons. (#1009)

Fixed:
* Icons in feed list are now correctly vertically centered. (#999)
* Fixes related to word-wrap of long texts in article list and feed details pane. (#1033)
* Multi-column sorting is now correctly persistent. (#1039)
* Fixed a problem where article filters are sometimes not applied correctly when feed is fetched.
* Skin's pallete (dark) are now applied depending on slightly enhanced logic.
* Skin's custom colors are now applied depending on slightly enhanced logic.
* HTTP redirection was not working sometimes, breaking some feeds.
* Docs updated.
* Feedly: Fix errors when some feeds did not have titles.
* Almost all localizations refreshed.
* Fixed multiple crashes.
* Correctly show numeric badge on Windows if RSS Guard starts in tray/minimized mode.

4.4.0
-----

Added:
* Read/unread state is now also shown by coloured dot in article list, inspired by similar feature of QuiteRSS. The behavior is switchable in settings. (#948)
* Details of selected feed list item are now enhanced with new information. (#962)
* Item (feed) ID is now visible in item details and in tooltips of feed list. (#965)
* "nudus" skin is bit tweaked. (#942)
* Added option to reorganize any folder in feed list alphabetically even in manual sorting mode. (#918)
* Added shortcuts to scroll article up/down. (#408)
* Added global option to open all hyperlinks by default in external web browser. (#386)
* Email editor for Gmail now supports rich-text.
* Added support for very fast feed fetching intervals.
* Added button to clear web cache and storage.
* Added some missing icons.

Fixed:
* Application performance is now hugely improved when using big number of labels and/or article filters. There are some possibilities for extra performance fine-tuning which might be addressed in the future. (#952)
* Behavior and visual representation of "article highlighter" and "article list filter" tool buttons is now fixed. (#943)
* Newly created label is now placed in correct sort position in feed list. (#978)
* Fixed html/plain auto-detection for "https://blog.torproject.org/blog/feed". (#979)
* Modal dialogs are also taken into account for feature "do not fetch feeds when main window is unfocused". (#973)
* Hamburger menu did not work in fullscreen mode in some cases. (#953)
* Resizing of feed import dialog is now better. (#945)
* Unwanted application restarts. (#940)
* Main window fade-in effect on Windows OS is now consistent. (#933)
* Many other smaller fixes.

4.3.4
-----

Added:
* Persistent article/item viewer. By default it is on. If no article is selected but feed/category is, then miscellaneous information about selected feed list item is displayed. (#424)
* macOS build is now built with macOS 11.
* Linux build is now built with Ubuntu 20.04 which is now oldest supported Linux LTS distribution.
* Reworked logic of determining which article states (read/unread/starred/unstarred) have changed when synchronizing states to remote feed servers. This concerns all synchronized plugins like Gmail, Greader, Feedly, etc. and show in theory lead to much better performance when you mark many articles as read or unread.
* Couple of extra QoL enhancements for Gmail like proper encoding of attachment filenames, turned off displaying of "enclosures" as these are displayed in other way, etc.

Fixed:
* Deadlock when fetching feeds in some corner situations is now resolved. (#910)
* URLs of articles are now sanitized from leading and trailing spaces. (#914)
* ATOM feeds were mistakenly changed to RSS feeds during OPML import. (#913)
* Now compiles with GCC 13. (#911)
* Freezing of GUI when fetching feeds should now be gone even on newer Qt library.
* Correct account-wide proxy is used when importing feeds.
* Article duplicity checks are now much more useful and actually working in article filters.
* Translations synced.
* All buttons from article toolbar now correctly follow tool button style.

4.3.3
-----

Added:
* Article searching was greatly improved - now you can use either text or regexp or wildcard as search phrase and you can choose whether to search just in titles or in whole article. (#886)
* Added option to focus feed/article lists with keyboard shortcuts. (545)
* Uninstaller now should detect if RSS Guard is running or not. (#529)
* Gmail: Original e-mail body is now appended to response.
* Gmail: E-mail preview now uses styling from skin for unified UX.
* Minor enhancements for OPML importing.

Fixed:
* Showing pictures from authenticated feeds now should work. (#909)
* Word-wrap is now correctly used for plain-text articles. (#900)
* Some memory leaks were patched and also SQLite database connections now share "cache" across all threads, resulting in drastically better RAM usage of the app.
* Feedly: Article state synchronization now works.
* Updated docs, updated translations.

4.3.2
-----

Added:
* Display total number of underlying feeds/categories in account's tooltip in feed list. (#881)
* Press "CTRL+F" when article script textbox is highlighted in "Article filters" dialog to allow for text searching. (#889)
* Filtering option in article list toolbar are now inclusive with checkbox like appearance. You can now thus select multiple filtering conditions and if article meets atleast one of them, it is displayed. (#468)
* WebEngine disk cache now can be disabled in settings. If it is "disabled" then RSS Guard will use memory-based cache which is automatically destroyed when RSS Guard exits. (#725)
* Help spoilers now can display HTML help with clickable hyperlinks.
* Skins are now able to load custom TTF and OTF fonts and also skins now are able to specify application-wide font. You can see sample usage of this feature in [sample](https://github.com/martinrotter/rssguard/tree/master/resources/skins/plain) skin.

Fixed:
* Fixed crash when importing OPML files.
* Fixed looooong-standing hidden bug which could cause that labels DEassigned from filters were not synchronized back to feed service if supported.
* Enhanced information about "resources" in "About" dialog.


4.3.1
-----

Fixed:
* Reverted to Qt 6.3 for Windows 10+ builds due to some regressions AGAIN.
* Fixed TT-RSS icons downloading when obtaining list of feeds/folders.
* RSS Guard now converts all placeholders (for example "%data%") to native path folder separators.

4.3.0
-----

Added:
* Massive update for feed fetching mechanism. It is now very parallelized and performance gain should be brutal. On my development PC with 4 cores (Intel i5) I observed 800 % performance boost. Note that this feature required huge number of changes on source code so there could be some corner case regressions or not so polished situations. File bug report when that happens. Also, number of threads used by this feature is configurable via `--threads` command line switch. This parallelization approach will also be applied to some other parts of application in the future, particularly for some massive batched network operations in some plugin - TT-RSS, Greader or Gmail - which will result in massive performance boost too.
* RSS Guard is now available on Flathub in two distinct variants - "full" and "lite" (same as "nonwebengine").
* Suffix ".xml" is also accepted for OPML 2.0 files.
* Brutal speed enhancements when importing OPML 2.0 files. Whole functionality is now properly parallelized and performance boost is potentially massive, depending on number of your CPU cores/threads.
* Qt 6 bumped to 6.4.2 version - this fixes some regressions.

Fixed:
* Some random Mac OS X crash. (#866)

4.2.7
-----

Added:
* Released only due to technical reasons. (#836)

Fixed:
* Released only due to technical reasons. (#836)

4.2.6
-----

Added:
* Bunch of premade sample article filters added to "Article filters" window.
* Placeholders in external tools definitions can be now arbitrarily placed.
* Article RSS enclosures can now be added from within article filters.
* Added customizable skin color for feeds with NEW articles. So now it is possible to distinguish between NEW and UNREAD (but old) articles. (#850)
* Added application debug log dialog. See "Help" menu for more.
* Too big fetched feed icons are now automatically scaled down to fixed size (48x48).
* Now it is possible to run post-process script when importing OPML. (#848)
* Now it is possible to change "User-Agent" HTTP header. (#835)
* Added now column into article list which shows labels for each article. (#768)
* Now it is possible to "suppress" feed. Suppressed feeds do not trigger notifications. (#745)

Fixed:
* HTML detection on the QTextBrowser viewer is now more precise. (#813)
* Article decoding for Nextcloud News works better. (#814)
* Inoreader built-in API tokens are removed, because they were abused.
* Default AdBlock lists now have corrected URL addresses.
* Fixed full-article scraper "scrape-full-articles.py".
* Do some preparations and code cleanups for adding "lite" RSS Guard variant to Flathub.
* Nextcloud News plugin processes "mediaThumbnail" and "mediaDescription" when parsing articles. (#831)
* Avoid appending empty RSS enclosures to articles. (#832)
* AppImage reverted to Qt 5 as Qt 6 support in AppImage generator is very very buggy.
* All dialogs where icons/images are selected now load their "formats" dynamically to support all possible image formats correctly. (#834) This effectivelly adds "webp" and other formats on systems where it is supported.
* Fixed crash. (#849)
* Enable smooth-scrolling by default. (#793)

4.2.5
-----

Added:
* RSS Guard now can use super fast feed/article refresh rates. At this point it is possible to set refresh interval even to 1 second to allow super fast checking for content changes. (#723)

Fixed:
* Newspaper mode caused some GUI glitches. (#810)
* Feedly crashed whole application when performing folder/feed synchronization. (#807)
* Some specific feeds are faulty but some adjustments were made to make RSS/ATOM parsing more loose. (#805)
* Fixed HTML/plain article content auto-detection for some specific HTML cases. (#792)
* Lessened severity of some debug messages. (#804)

4.2.4
-----

Added:
* Intelligent and network-usage-friendly two-way article synchronization is now supported in TT-RSS plugin too. Note that "api_newsplus" plugin must be installed on your TT-RSS instance. (#339)
* Mac OS X release of RSS Guard now supports "arm64 Apple Silicon" architecture. (#758)
* Google Reader API plugin now supports Miniflux. (#780)
* Full-blown drag/drop feed/category reordering/sorting. Behavior is different depending on whether "alphabetic sorting" is enabled or not. (f63af3a05)
* Windows and Linux official packages now use Qt 6.3.1 or newer. Qt 5.15 is still supported, though.

Fixed:
* Handling of CLI parameters was improved in several places throughout the app. This fixes calling external browsers etc. (#748)
* Tray icon sometimes reported wrong number of new/unread articles. (#754)
* App should handle pinned shortcuts on Windows better and allow it to re-open existing main window of running RSS Guard instance. (#773)
* App sometimes generated empty OPML files. (#774)
* Columns in article list were sometimes wrongly reset to default state. (#778)
* Fixed icon validation for Flatpak release. (#782)
* Skin "nudux-*" was improved. (#783)
* Feeds sorting mode/order is now correctly persistent in all cases. (#784)
* Handling of images in non-webengine article viewer is now better. (#785)
* Better MinGW compatibility when compilling RSS Guard.
* Translations synced.
* Updated docs.
* Specific error strings are now propagated to feed's tooltips properly so user can see specific error messages for feeds.
* Article content layout is now greatly improved as content is automagically converted to HTML when displayed.
* Better date/time handling of incoming e-mails in Gmail plugin.

4.2.3
-----

Added:
* Autostart feature is now overally better and works with Flatpak build too. (#718)
* Added a switch to automatically reject all incoming HTTP cookies application-wide. (#716)
* Gmail: Display proper "To" e-mail header when displaying e-mails.

Fixed:
* Feedly: Correct article URLs are now fetched if possible. (#732)
* Mac OS X: Fixed launching with error "invalid application". (#721)
* External resources for non-web-engine article viewer are now resolved more correctly.

4.2.2
-----

Added:
* Feedly now supports intelligent synchronization algorithm, resulting in much faster sync.
* Feedly now decodes feed titles from HTML to plain text.
* New CLI "-w" option to force "nowebengine" behavior even in standard "webengine" RSS Guard builds.
* Article viewers are greatly refactored and internally use sane C++ interface - this allows this piece of RSS Guard to be expanded better in the future.
* "nowebengine" text-based article viewer now can display images. (#583)
* "nowebengine" text-based article viewer now can act as VERY SIMPLE web browser. It displays webpages in a simpler text-like fashion, it can follow hyperlinks, context menu offers more actions like downloading of links etc.
* Gmail plugin now has better e-mail viewer which also allows to "Forward" e-mails. It will be extended in the future even more. Also, e-mails are now sent in "HTML" mode.
* Data can be optionally exported to OPML 2.0 without icons. (#685)
* Added button into tray icon context menu to allow show/hide of main RSS Guard window. (#679)
* Article **list** filtering button is now greatly enhanced. Go to "Settings -> User interface -> Toolbars -> Toolbar for article list" and add "Article list filter" button to the toolbar.

Fixed:
* If article does not provide sane date/time, replace with current date. This particularly concerned Gmail plugin.
* Added some missing icons, some icons changed.
* Some UI strings updated, translations updated too.
* "Licenses" page in "About" dialog was redesigned.
* Other minor fixes.

4.2.1
-----

Added:
* Number format of unread counts in task bar icon and tray icon is now enhanced. It shows format "%1k" for number bigger than 999, for example 16 000 of unread articles will be displayed as "16k". (#662)

Fixed:
* Dynamic libraries are now properly "linked" in Mac OS X build. (#663)

4.2.0
-----

Added:
* Items in feed list (accounts, categories, feeds) now can be manually sorted. Go to "Feeds -> Sort alphabetically" menu option to switch the feature. Then you can re-adjust sort order with context menu on each item. (#302)
* Article list now can display full article titles with multiline layout. Switch the feature in "Settings -> Feeds & articles -> Articles list". (#570)
* Date/time format of articles in article list is now VERY customizable, you can set to display e. g. time only for today's items, or show relative dates for recent items etc. (#608)
* Taskbar item of RSS Guard on Windows now displays progress of feed downloading, also show number of unread articles in main window title and as a "bubble" icon in taskbar. (#622)
* RSS Guard now builds with cmake. (#615)
* "Add feed" and "Edit feed" dialogs were redesigned a bit for better UX. (#603)
* New action "Open main menu" can now be added to toolbars. (#604)
* If feed does not provide date/time for its articles, then current date/time is used and now this artificial date/time is iterated to achieve consistent sorting for those articles. (#621)
* Individual feeds can now be turned off. Turning feed "off" disables it and it won't get any new articles. See "Edit feed" dialog, specifically "Miscellaneous" tab. (#393)
* Gmail: Synchronization of e-mails is now MUCH faster, especially subsequent synchronizations. Also, some Gmail-related fixes were added.
* TT-RSS: Added "share to published" feature which allows user to save custom notes to TT-RSS. Can be used with context menu on "[SYSTEM] User-published articles" feed list item. (#198)
* Count of unread articles in taskbar is now switchable. (#649)
* Documentation was updated. (#582)
* All modal dialogs now should have "maximize" button. (#629)
* Context menu of article list now offers action "Copy links". (#345)
* Articles downloaded from single feed are now de-duplicated before they are processed and saved into RSS Guard DB. (#650)
* Node.js integration was polished and generalized and will be used for more optional features in the future.
* Firefox-inspired "reader mode" is now available in WebEngine version of RSS Guard. Check internal web browser toolbar for the relevant "Open in reader mode" button. (#638)
* New action "Open in internal browser (no new tab)" which opens source website of article in article previewer. (#590)
* Polishing of feed import feature. (#619)
* Updated built-in "nudus-*" skins. Thanks to akinokonomi for this.
* RSS Guard is now aware of "qt5/6-ct" style used by "qtct" tool.
* Handling of skins, Qt stylesheets and Qt styles is now rewritten quite a lot to achieve more consistent UX and allow for much greater flexibility for skin creators.


Fixed:
* Feedly: HTML entities/code in article titles were not encoded and displayed correctly. (#576)
* GUI separators were resetting their positions to middle, hopefully fixed. (#587)
* Inaccurate reporting of new articles when there are no new articles, due to DB layer error. (#618)
* "New messages" feed status is now more persistent. (#631)
* Handling of character set in MariaDB backend is now improved, all UTF-8 characters should now work correctly. (#579)
* Loading of skins/themes is now done more early to avoid some clashes with GUI initialization. (#611)
* Fixed displaying of special characters in RSS/RDF/ATOM account name. (#657)
* No separators in custom source specification are needed now.

4.1.2
-----

Fixed:
* Make webengine cookies synchronization one-way because it was crashing in some instances. This is likely temporary fix.
* Fixed RSS Guard crashing when using MariaDB backend. Problem was in buggy runtime generation of DDL SQL scripts. (#573)
* Expanding/collapsing of categories is now EVEN MORE properly persistent and behaves more correctly when filtering feed list in some way. (#546)

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)