Newsbeuter 2.0 released

Yep, you read correctly, newsbeuter 2.0 is out. In the last 4 months of work, I added so many more features than I had originally planned, so I though, “there will probably never be a release with more new features, this is the time to make a major release”.

One reason for all the new features is probably a tragic one: a few days after moving to Berlin, I had to be brought to the hospital, where I had to spend two weeks, and thus had a lot of time to work on new features. That’s also why I call this release the “Virchow release”: the hospital where I was brought was the Virchow hospital in Berlin (Charité Campus Virchow, to be exact). Thanks also go out to newsbeuter’s Debian maintainer, Nico Golde, and his girlfriend, who visited me in the hospital a few times and made the time there a lot less boring, and to text tool rockstar Sven Guckes, who also visited me and gave me a lot of great feedback regarding newsbeuter.

As usual, you can grab the latest newsbeuter release from newsbeuter’s download page.

As already mentioned, a lot of new features have been added, and so I will describe them to give a better understanding of what has changed and improved.

First of all, the whole dialog management was made much more flexible. Before this release, all dialogs (i.e. feed list, article list, article view, …) were internally stored as a stack: opening e.g. a feed pushed a new article list on this stack, and quitting this dialog removed it from the stack again. In this release, this functionality has been extended: it is now not only possible to push new dialogs to the stack, you can now jump to other dialogs that are open but not on the top of the stack, and you can even remove open dialogs. Just press the ‘v’ key, and you’re in the “dialogs” view from where you can do all these operations. So, what’s the advantage? It e.g. allows you to open more than one feed or article at the same time. By pressing Ctrl-V or Ctrl-G, you can go to the next or previous dialog in the list, making it possible to quickly switch between different dialogs.

The second new big feature is the replacement of libmrss and libnxml with an own RSS/Atom parser which uses libxml2. Not only were about 6000 lines of C code replaced with about 600 lines of C++ code, newsbeuter now also builds upon on a proven and flexible XML parser. This change also led to a nice side effect: due to the new code, it was pretty easy to implement proper support for the HTTP/1.1 “If-Modified-Since” and “If-None-Match” conditional download features. libmrss had similar abilities, but had to do two requests. This also means that the new code downloads feeds much faster and with less resource usage. Basic support for Yahoo’s Media RSS extension has also been added: Media RSS content is handled like enclosures. And it’s now even possible to configure local files as RSS feeds, by using the “file://” prefix before the local file path.

Another improvement is that newsbeuter is now able to handle more than one OPML files when using OPML URLs as URL source: this allows it to subscribe to several OPMLs and read all of the contained feeds.

Another convenience feature is the ability to configure for how many days articles shall be kept (coniguration option “keep-articles-days”). Until now it was only possible to configure the maximum number of articles per feed that shall be kept. In addition to this, it is now also possible to configure how long articles shall be kept since they were initially downloaded. Both features can be combined, of course.

A security improvement has also been added to newsbeuter 2.0: URLs that contain authentication information (e.g. http://username:password@hostname.tld/feed.rss) are now “censored”, i.e. username and password are replaced by ‘*:*’, making it impossible to see the authentication information anywhere on the screen.

HTML rendering has also been improved: text within links is now underlined, text between <u> tags is underlined, too, and text between <strong> or <b> tags is now rendered as bold. This makes HTML rendering much nicer than before.

The commandline has been improved, too: newsbeuter now contains support for commandline completion using the TAB key: type 0 or more characters of the command you want to execute, and press TAB to cycle through all the matching commands. The “set” command even allows completion of the available variable names. Another extension is that entered commands and search queries are now persisted to history files in the ~/.newsbeuter configuration directory. This allows to enter commands, quit newsbeuter, reopen it, and to have all the previously entered commands and search queries available in the commandline resp. search history. Command and search history persistence can of course be disabled.

Other nice new features are the “source” commandline command to reload configuration files, the “pipe-to” key to pipe the current article to an external command, a new “between” operator for the internal query language, a new “age” attribute for articles to filter for articles for relative age (in days) and the ability to sort feed list and article list interactively.

And even the search function was improved: it is now possible to search for text from the article view (found text now stands out in the text), and when opening articles from the search result dialog, the search phrase is also marked in the text.

And last but not least, a kind of “funny” feature was added too: when pressing Ctrl-K, newsbeuter now goes to a random unread article. This makes reading articles with newsbeuter a lot less predictable. This wasn’t my idea, but is based on input from a user, and since I usually listen to the newsbeuter users, I implemented this feature. Even though it’s quite unusual to have such a non-deterministic feature in a newsreader, there seems to be a demand for such functionality.

And another achievement during development was that I finally found the reason for the occasional crashes that some of you probably experienced: it was a subtle but really stupid programming error where I forgot that C++’s std::vector class is not thread-safe, and concurrent read/write accesses from several threads led to occasional crashes. This is fixed now, and newsbeuter has been rock-stable in my tests so far.

So, I hope you like this new release, download it, use it, and if you find any bugs or have any feature requests or wishes, don’t hesitate to report them to me. Enjoy!

7 Responses to Newsbeuter 2.0 released

  1. nion's blog says:

    newsbeuter 2.0 released…

    Yay, newsbeuter 2.0 was just released! I am way too lazy to summarize all the new features and bugfixes, It’s just to many of them. Here is the changelog:
    Added more flexible dialog handling …

  2. newsbeuter 2.0 veröffentlicht…

    (…) Vor wenigen Stunden hat Andreas Krennmair Version 2.0 des Terminal Feedreaders newsbeuter freigegeben. Unter anderem fanden die folgenden Änderungen Einzug in di (…)…

  3. Grant says:

    Could anybody please explain what this newsbeuter thingie is? Hundreds of words in the above posting but no fucking word about what that damn thing is.

  4. Hannes says:

    How about you fucking go to the damn http://www.newsbeuter.org/ and discover the greatest RSS program in the world.😉

    Great news and so unexpected by me. Thank you!

  5. Grant says:

    Thanks Hannes, appreciate it. Pretty hot stuff.

  6. Newsbeuter Version 2.0 und Debian Lenny deb und Statusanzeige in ion3…

    Da ist sie, die neue Version des RSS-Feedreaders Newsbeuter, der “mutt” unter den Feedreadern. Changelog:Added more flexible dialog handling Improved position handling in article list (fixes #112; thanks to Isaac Good)Fixed a lot of bugs (#102, #111,…

  7. […] Changelog: Added more flexible dialog handling Improved position handling in article list (fixes #112; thanks to Isaac Good) Fixed a lot of bugs (#102, #111, #117, #130, #131). Added ability to specify a list of OPML URLs when using OPML as URL source. Added config option “keep-articles-days” to optionally keep articles only for a limited number of days. Added config option “bookmark-interactive” to indicate that the configured bookmarking command is interactive. Don’t display authentication information in URLs (fixes #121). Replaced mrss with new RSS/Atom parser. Added ability to search for text from the article view. Added basic support for Yahoo Media RSS. Made article view pager configurable. Improved HTML rendering of links and underlined and bold text. Added “:source” commandline command to (re)load configuration files. Implemented “pipe-to” key to pipe articles to external commands. Implemented backtick evaluation for configuration files. Extended filter language with “between” operator. Added “age” attribute for articles to filter them for relative age (in days). Extended “set” commandline command to toggle boolean variables and reset configuration variables of all types to their default. Added ability to configure local files as feeds. Added a “random-unread” key to go to a random unread article. When opening articles from a search result dialog, make search phrase stand out in article view. Persist commandline and search history. Implemented commandline completion. Improved help dialog so that it now shows unbound functions. Added ability to sort feed list and article list by interactively choosing the sort method. Improved and extended conditional HTTP download handling. weitere Infos im newsbeuter-Blog […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: