# 2021-03-13 13:42:00.133769 UTC (+0000)

sfeed 0.9.22 and sfeed_curses 0.9.9 was released.

sfeed is a tool to convert RSS or Atom feeds from XML to a TAB-separated file.

It can be found at:
 * git://git.codemadness.org/sfeed
 * gopher://codemadness.org/1/git/sfeed
 * https://codemadness.org/releases/sfeed/
 * gopher://codemadness.org/1/releases/sfeed/


sfeed_curses is a curses UI front-end for sfeed.

It can be found at:
 * git://git.codemadness.org/sfeed_curses
 * gopher://codemadness.org/1/git/sfeed_curses
 * https://codemadness.org/releases/sfeed_curses/
 * gopher://codemadness.org/1/releases/sfeed_curses/


sfeed has the following changes compared to 0.9.21:

* Fix a time parsing regression with the non-standard date format
 "2021-02-03 05:13:03" (without T). This non-standard format is now
 supported again.

* Fix/improve/refactor URI parsing and formatting. This now supports
 non-authoritive URI like "magnet:" links. local file URIs like file:/// are
 now also allowed (of course the user should be careful with file:/// URLs).

 This now follows the RFC standard more closely (but not completely):
 https://tools.ietf.org/html/rfc3986

* sfeed_update: just pass the feedurl directly as the base URL. This simplifies
 the code and allows for more correct transformation of relative URLs. Note
 though that feeds should not contain relative URLs though.

* sfeed_update: add an overridable parse() function, using sfeed(1) by default
 This can be useful to more cleanly make connector scripts.

* sfeed_update: restructure the code and allow to more easily reuse parts of the
 functions by including the script. Add an example script in the README to allow
 more efficient parallel execution using the non-POSIX xargs -P option.

* Documentation improvements: add examples, typo fixes, mandoc (lint) errors, etc.


sfeed_curses has the following changes compared to 0.9.8:

* sfeed_content: fix unescaping function. A sequence with an escaped \ before
 another sequence would be incorrectly unescaped.

* UI: fix tiny glitch when the feed pane is exactly the same size as the
 window which incorrectly misaligned the scrollbar by 1 column.

* sfeed_content: allow to use script on multiple TSV lines, separate entries by
 a form feed (\f) character.

* Mark as read: use the ID if the link is empty. This allows to mark items as
 read if the item does not have a link. An ID field should be mandatory by the
 feeds specification.
 Suggested by feedback from Hadrien Lacour, thanks!

* Add feature to process a sequence of keys automatically on startup.
 This adds the environment variable $SFEED_AUTOCMD:
 Read and process a sequence of keys as input commands from this environment
 variable first, afterwards read from stdin as usual.
 This can be useful to automate certain actions at the start.

* Add a horizontal and monocle layout and rework/cleanup drawing logic.
 * Add the horizontal and monocle layouts.
 * The monocle layout replaces the mode of hiding the sidebar using 's'.  This
   's' keybind now toggles between a monocle and non-monocle layout (vertical or
   horizontal). When a feed is read from stdin (no filenames) then the default
   layout will now be monocle also.
 * The monocle layout also works nicely on smaller portable screens (such as a
   Motorola Droid4) or on smaller terminals or if a more newsboat-like style is
   preferred.
 * Layouts can be changed with the keybinds '1', '2', '3', a preference can also
   be set at startup using the recently added SFEED_AUTOCMD feature, like so:
   SFEED_AUTOCMD=2 sfeed_curses.

* Allow to spawn the search prompt, even if there is nothing to search for.

* Documentation improvements and typofixes.