* 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.
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.
* 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.
* 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.
* 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.
* 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.
* 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)
* 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.
* 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.
* 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)
* 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)
* 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)
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.
* 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.
* 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.
* 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.
* 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.
* 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.