<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Crossbow</title>
<description>The minimalist feed aggregator</description>
<link>https://dacav.org/projects/crossbow</link>
<item>
<title>Crossbow 1.0.1</title>
<link>https://dacav.org/projects/crossbow/releases/1.0.1</link>
<guid isPermaLink="false">crossbow/1.0.1</guid><description><![CDATA[Fixed freebsd compilation, accidentally neglected]]></description>
<content:encoded><![CDATA[<p>Fixed freebsd compilation, accidentally neglected</p>
]]></content:encoded>
</item>
<item>
<title>Crossbow 1.1.3</title>
<link>https://dacav.org/projects/crossbow/releases/1.1.3</link>
<guid isPermaLink="false">crossbow/1.1.3</guid><description><![CDATA[Add user-agent ("crossbow/$version") - contrib. Matt Carroll

Minor man-pages improvements]]></description>
<content:encoded><![CDATA[<p>Add user-agent (&quot;crossbow/$version&quot;) - contrib. Matt Carroll</p>
<p>Minor man-pages improvements</p>
]]></content:encoded>
</item>
<item>
<title>Crossbow 1.2.2</title>
<link>https://dacav.org/projects/crossbow/releases/1.2.2</link>
<guid isPermaLink="false">crossbow/1.2.2</guid><description><![CDATA[Fixed bug in error handling.

   Thanks to Anton Lindqvist (anton at basename.se) for spotting.]]></description>
<content:encoded><![CDATA[<p>Fixed bug in error handling.</p>
<p>Thanks to Anton Lindqvist (anton at basename.se) for spotting.</p>
]]></content:encoded>
</item>
<item>
<title>Crossbow 3.0.0</title>
<link>https://dacav.org/projects/crossbow/releases/3.0.0</link>
<guid isPermaLink="false">crossbow/3.0.0</guid><description><![CDATA[Replaced build system (GNU Autotools -> CMake)

Replace item identifiers with message digests

   A feed, found in the wild, highlighted a software defect: multiple feed
   entry having the same entry IDs could not be individually handled.

   Entries will be no longer uniquely identified by the GUID or Link,
   rather by the SHA-1 digest of the concatenation of a few entry fields.
   The current selection of fields are Title, GUID, Link and Publishing Date.

   To obtain the digest we rely on libcrypto.

Dropped crossbow-upgrade(1).

Various minor bugfixes and code and testing improvements.]]></description>
<content:encoded><![CDATA[<p>Replaced build system (GNU Autotools -&gt; CMake)</p>
<p>Replace item identifiers with message digests</p>
<p>A feed, found in the wild, highlighted a software defect: multiple feed
entry having the same entry IDs could not be individually handled.</p>
<p>Entries will be no longer uniquely identified by the GUID or Link,
rather by the SHA-1 digest of the concatenation of a few entry fields.
The current selection of fields are Title, GUID, Link and Publishing Date.</p>
<p>To obtain the digest we rely on libcrypto.</p>
<p>Dropped crossbow-upgrade(1).</p>
<p>Various minor bugfixes and code and testing improvements.</p>
]]></content:encoded>
</item>
<item>
<title>Crossbow 2.0.0</title>
<link>https://dacav.org/projects/crossbow/releases/2.0.0</link>
<guid isPermaLink="false">crossbow/2.0.0</guid><description><![CDATA[Introduced configuration file

   All feed properties that were previously set via crossbow-set(1) are now
   defined by a configuration file. The configuration is searched in
   ~/.crossbow.conf, ${XDG_CONFIG_HOME}/crossbow.conf and
   ~/.config/crossbow.conf

Unified all binaries into one

   Having a configuration file allows to have a single binary named
   crossbow(1), since all other binaries were just required to access the
   feeds configurations.

New persist file format

   In previous versions of crossbow, the feed updates were tracked in the
   same files as the configuration.  Since the feed configuration now lives
   in the configuration file, the feed persistence file is used uniquely to
   store updates.

Merged 'print' and 'pretty' logics

  Granted that 'pretty' is just a glorified 'print' that should use a special
  format.

Many minor improvements

Updated man pages]]></description>
<content:encoded><![CDATA[<p>Introduced configuration file</p>
<p>All feed properties that were previously set via crossbow-set(1) are now
defined by a configuration file. The configuration is searched in
~/.crossbow.conf, ${XDG_CONFIG_HOME}/crossbow.conf and
~/.config/crossbow.conf</p>
<p>Unified all binaries into one</p>
<p>Having a configuration file allows to have a single binary named
crossbow(1), since all other binaries were just required to access the
feeds configurations.</p>
<p>New persist file format</p>
<p>In previous versions of crossbow, the feed updates were tracked in the
same files as the configuration.  Since the feed configuration now lives
in the configuration file, the feed persistence file is used uniquely to
store updates.</p>
<p>Merged 'print' and 'pretty' logics</p>
<p>Granted that 'pretty' is just a glorified 'print' that should use a special
format.</p>
<p>Many minor improvements</p>
<p>Updated man pages</p>
]]></content:encoded>
</item>
<item>
<title>Crossbow 4.0.0</title>
<link>https://dacav.org/projects/crossbow/releases/4.0.0</link>
<guid isPermaLink="false">crossbow/4.0.0</guid><description><![CDATA[Drop libmrss in favour of libeccio.

   The libeccio library implements a simple abstraction over RSS and Atom
   formats. It has been written by the author of Crossbow (yours truly) for
   the purpose of replacing libmrss in crossbow.

   Some of the printf-like placeholders have been removed, in accordance to
   the fields that are not available in libeccio.  They might be added again
   in the future if deemed useful or requested.

   The check for entry uniqueness changed slightly.
   On the first execution after upgrade, under certain conditions, previously
   processed entries might end up processed again.

   libeccio supports the <content:encoding> extension of RSS.  The library
   can also deal with nested XML. Retrieved content is more likely to contain
   the full article, which might however end up being HTML-encoded.

   See crossbow.conf(5) and crossbow-format(5) for specific details on what
   changed.

   The libeccio library is available online at
   https://dacav.org/projects/libeccio/

Dropped GNU GPL license in favour of ISC.

Improved functional testing and general quality.]]></description>
<content:encoded><![CDATA[<p>Drop libmrss in favour of libeccio.</p>
<p>The libeccio library implements a simple abstraction over RSS and Atom
formats. It has been written by the author of Crossbow (yours truly) for
the purpose of replacing libmrss in crossbow.</p>
<p>Some of the printf-like placeholders have been removed, in accordance to
the fields that are not available in libeccio.  They might be added again
in the future if deemed useful or requested.</p>
<p>The check for entry uniqueness changed slightly.
On the first execution after upgrade, under certain conditions, previously
processed entries might end up processed again.</p>
<p>libeccio supports the <a href="content:encoding">content:encoding</a> extension of RSS.  The library
can also deal with nested XML. Retrieved content is more likely to contain
the full article, which might however end up being HTML-encoded.</p>
<p>See crossbow.conf(5) and crossbow-format(5) for specific details on what
changed.</p>
<p>The libeccio library is available online at
https://dacav.org/projects/libeccio/</p>
<p>Dropped GNU GPL license in favour of ISC.</p>
<p>Improved functional testing and general quality.</p>
]]></content:encoded>
</item>
<item>
<title>Crossbow 1.1.1</title>
<link>https://dacav.org/projects/crossbow/releases/1.1.1</link>
<guid isPermaLink="false">crossbow/1.1.1</guid><description><![CDATA[Extra placeholders %ft (feed title) and %fi (feed identifier)

The crossbow-fetch(1) command supports dry-run modes (-d and -D) and a
catch-up mode (-c).

Man pages refinements

Other general improvements and bug fixes]]></description>
<content:encoded><![CDATA[<p>Extra placeholders %ft (feed title) and %fi (feed identifier)</p>
<p>The crossbow-fetch(1) command supports dry-run modes (-d and -D) and a
catch-up mode (-c).</p>
<p>Man pages refinements</p>
<p>Other general improvements and bug fixes</p>
]]></content:encoded>
</item>
<item>
<title>Crossbow 1.1.2</title>
<link>https://dacav.org/projects/crossbow/releases/1.1.2</link>
<guid isPermaLink="false">crossbow/1.1.2</guid><description><![CDATA[Dropped crossbow-outfmt(1), which was a noinst_PROGRAMS anyway

Fixed compilation under Darwin

Use pledge(2) under OpenBSD - contrib. Anton Lindqvist <anton@basename.se>

General improvement and bug fixes]]></description>
<content:encoded><![CDATA[<p>Dropped crossbow-outfmt(1), which was a noinst_PROGRAMS anyway</p>
<p>Fixed compilation under Darwin</p>
<p>Use pledge(2) under OpenBSD - contrib. Anton Lindqvist <a href="mailto:anton@basename.se">anton@basename.se</a></p>
<p>General improvement and bug fixes</p>
]]></content:encoded>
</item>
<item>
<title>Crossbow 1.2.1</title>
<link>https://dacav.org/projects/crossbow/releases/1.2.1</link>
<guid isPermaLink="false">crossbow/1.2.1</guid><description><![CDATA[Avoid reliance on /dev/fd/XXX (broken on BSD)

   Fix a regression introduced with verison 1.2.0.  The new download
   procedure relies on libmrss accessing the downloaded feed via
   /dev/fd/<fileno>.  This doesn't work on FreeBSD and OpenBSD, where
   these files are implemented as character devices.

   Thanks to Anton Lindqvist (anton at basename.se) for spotting.]]></description>
<content:encoded><![CDATA[<p>Avoid reliance on /dev/fd/XXX (broken on BSD)</p>
<p>Fix a regression introduced with verison 1.2.0.  The new download
procedure relies on libmrss accessing the downloaded feed via
/dev/fd/<!-- raw HTML omitted -->.  This doesn't work on FreeBSD and OpenBSD, where
these files are implemented as character devices.</p>
<p>Thanks to Anton Lindqvist (anton at basename.se) for spotting.</p>
]]></content:encoded>
</item>
<item>
<title>Crossbow 4.1.0</title>
<link>https://dacav.org/projects/crossbow/releases/4.1.0</link>
<guid isPermaLink="false">crossbow/4.1.0</guid><description><![CDATA[Feed groups support

   The main focus of this release is the introduction of feed groups.

   It is now possible to declare one or more groups in the configuration file
   to list shared feed properties.  Individual feeds can inherit these
   properties of one or more feed groups, reducing redundancy in configurations.
   The configuration remains backwards compatible.

   See crossbow.conf(5) for specific details.

Minor changes

   The release includes a few minor fixes and improvements, mostly related
   to the configuration file parsing and to the build system.]]></description>
<content:encoded><![CDATA[<p>Feed groups support</p>
<p>The main focus of this release is the introduction of feed groups.</p>
<p>It is now possible to declare one or more groups in the configuration file
to list shared feed properties.  Individual feeds can inherit these
properties of one or more feed groups, reducing redundancy in configurations.
The configuration remains backwards compatible.</p>
<p>See crossbow.conf(5) for specific details.</p>
<p>Minor changes</p>
<p>The release includes a few minor fixes and improvements, mostly related
to the configuration file parsing and to the build system.</p>
]]></content:encoded>
</item>
<item>
<title>Crossbow 1.2.0</title>
<link>https://dacav.org/projects/crossbow/releases/1.2.0</link>
<guid isPermaLink="false">crossbow/1.2.0</guid><description><![CDATA[Improved download procedure

   So far, Crossbow relied on the mrss_parse_url call for parsing remote
   feeds.  Now Crossbow directly uses libcurl, providing libmrss with a
   locally downloaded file instead.

   This modification allows Crossbow to be in control of the HTTP/HTTPS
   calls configuration, opening up for future developments.

   The crossbow-fetch(1) command now supports parallel download jobs (-j).

   WARNING: this modification requires libcurl >= 7.66.0, which is not
   currenlty available in some systems (e.g. Debian stable).  A backport
   is feasible, so contact the developer (dacav at fastmail dot com) in
   case of need.

Minor build system improvements

Minor code improvements]]></description>
<content:encoded><![CDATA[<p>Improved download procedure</p>
<p>So far, Crossbow relied on the mrss_parse_url call for parsing remote
feeds.  Now Crossbow directly uses libcurl, providing libmrss with a
locally downloaded file instead.</p>
<p>This modification allows Crossbow to be in control of the HTTP/HTTPS
calls configuration, opening up for future developments.</p>
<p>The crossbow-fetch(1) command now supports parallel download jobs (-j).</p>
<p>WARNING: this modification requires libcurl &gt;= 7.66.0, which is not
currenlty available in some systems (e.g. Debian stable).  A backport
is feasible, so contact the developer (dacav at fastmail dot com) in
case of need.</p>
<p>Minor build system improvements</p>
<p>Minor code improvements</p>
]]></content:encoded>
</item>
</channel>
</rss>
