Changes for r1p1 -> r1p2
-----------------------------------------------------------------------
* "Keep stories until read" option added

* URL in help panel fixed


Changes for r1 -> r1p1
-----------------------------------------------------------------------

* Fix for story selection problem after (un)starring a story

* All files now uniformly licensed under Perl license

* -h/--help and -v/--version options added

* Startup messages removed


=======================================================================
=======================================================================


Changes for b13 -> r1
-----------------------------------------------------------------------

* If a story was selected, then starred, then the link invoked, the
  link call would fail. Fixed

* XML parsing crash condition was accidentally re-introduced by
  changed related to logging code in b11. Repaired

* There are now 3 valid loglevels: debug, info, warning



Changes for b12 -> b13
-----------------------------------------------------------------------

* Manual now complete (chapter 4 finally added)

* Unicode handling fixes for List pane

* Minor logging tweaks


Changes for b11 -> b12
-----------------------------------------------------------------------

* New dependancy: Log::Dispatch::File, and thus a new Bundle::Olive.
  Note that you may have to delete /path/to/.cpan/Bundle/Olive.pm in
  order for 'cpan Bundle::Olive' to pick up the new version

* New debug mode and more improvements to logging

* OPML import fixes

* Linklist would appear to have broken numbering when a URL was linked
  to more than once in a story. Fixed

* Stories with no title no longer cause uninitialized value warnings

* UTF-8 handling improvements

* Regex for substituting 'LINK' with a URL in the external browser
  command is now global instead of single-instance

* Database access optimizations and story rendering optimizations for
  better user experience

* Local timezone correction was happening backwards. Fixed

* Makefile now includes DESTDIR for package support

* HEAD requests are now sent instead of GETs for pinging feeds


Changes for b10 -> b11
-----------------------------------------------------------------------

* The "Focus story on select" option has been removed. "Global story
  paging" (from b9) and the new linklist capability make it thoroughly
  obsolete

* All links within a story are now accessible via a popup linklist
  menu (default key is 'L')

* Complete rewrite of HTTP code -- response codes 200, 300, 301, 302,
  304, 307, 404, 4xx, 500, and 5xx are now properly handled. Failure
  codes are now handled smartly by Olive itself instead of just
  whining at the user (see
  http://trac.collapsar.net/olive/trac.cgi/wiki/OliveHttpHandling)

* U/N counts now change as filters turn on and off

* Marking a feed as dormant now skips all network activity related to
  a feed edit. Without this it was impossible to make an unreachable
  feed dormant

* SQLite tweaks for higher performance while processing feeds (massive
  database changes)

* HTML munging improvements -- lists are now given a basic treatment

* Release as well as revision are now shown in the About Box

* Titlebar length became off-by-one in b10. Fixed

* The beginnings of smart upgrade handling are in place. Olive now
  complains if it detects you last ran an old version and tells you to
  delete your story database if so.

* Hard feature freeze set for b12 -- no more new unplanned
  functionality from here on out

* Large overhaul of the manual; Chapter 2 in particular is much more
  readable and informative.

* POD effort begun, re-licensing begun, misc other crap


Changes for b9 -> b10
-----------------------------------------------------------------------

* Add feed was broken in b9 due to an inadvertly copied line of
  code. b10 is an emergency release to fix this.

* Last long-standing bug squashed: first story now selects properly at
  startup and after polls

* List height tweak in Remove Feeds dialog

* Trying to filter on flagged feeds when there are none is now a NOOP
  with an alert dialog like the one that accompanies attempting to
  force-poll feeds when none are marked as forced.

* Ditto for starred stories


Changes for b8 -> b9
-----------------------------------------------------------------------

* The old bug which caused some feeds to be polled whether their TTL
  had expired or not has been resolved

* The story pane can now be paged up/down while focus is on the list
  pane (and the keys for this are configurable)

* The default keys for poll/force-poll have changed from r/R to p/P

* Stories can now be "starred", which results in them being immune
  from deletion until unstarred

* Feeds can be now be marked as "flagged"

* The story list can now be filtered to show only starred stories
  and/or flagged feeds

* The Edit and Remove Feed dialogues are now sorted by feed name and
  display feed status info (flagged, forced, dormant)

* Feeds from some sources (notably UseModWiki) would sometimes have
  blank descriptions which would become hashrefs after processing by
  XML::Simple, causing them to show up as changed every time they were
  parsed. Fixed, thanks to patch from Peter Mauriusz

* Feeds with no items would cause a crashing bug in XML processing.
  Fixed

* A different XML processing error would cause a crashing bug in
  OliveFeed. Fixed

* More robust RFC822 date handling

* Anonymous read-only repository access established



Changes for b7 -> b8
-----------------------------------------------------------------------

* OPML import

* Most common functions now have user-modifiable keybindings (see
  manual) and the help popup reflects real key mappings

* Story list wasn't updating after some feed list updates. Fixed

* XML::Parser errors are no longer fatal. They are now trapped and
  written to the error log. A dialog identifying the problematic feed
  is then displayed and the feed is marked dormant

* Sometimes-inappropriate story URL extraction regex has been fixed

* Removing a feed now removes its associated disk files

* "Smart" HTML quotes now replaced with ASCII equivalents

* Other HTML reworking improvements

* Feeds with TTLs Olive considers invalid (less than 1s or non-numeric
  (except RDF legal values like "hourly") are now forced to one hour

* Manual coverage is nearly complete.

* Full source documentation and cleanup effort underway

* Olive now has a Trac install for bug reporting and tracking at
  http://trac.collapsar.net/olive/trac.cgi/wiki



Changes for b6 -> b7
-----------------------------------------------------------------------

* b6 fix for newlines broke them in a different way. Fixed

* Story list wasn't updating on forced refreshes. Fixed

* Add New Feed dialog was being destroyed on error. Fixed

* Keybinding changes: mark/unmark is now 'm' and 'u'
  markall/unmarkall is now 'M' and 'U'

* Olive now waits 30 seconds after the user's last keystroke before
  initiating a feed poll, should one come due while the user is active
  (NOTE: this only happens with a patched Curses::UI, as per INSTALL
  doc)

* URL display in stories changed from the URL in brackets to [[url:
  URL ]] (and matching [[img: URL ]]) to avoid breaking putty
  URL-detection

* Some feeds out there are RFC822-broken in a heretofore unseen way:
  no leading zero on the day-of-month. This is now checked for and
  worked around

* errors.log is no longer lost on startup, it is copied to
  errors.log.1 and then a new logfile opened. A startup timestamp is
  also written to the log

* Enhancements to HTML stripping and formatting routine

* The 'About' box is now a window instead of a dialog, and hence is
  scrollable, and hence is where all the acknowledgements and credits
  are going from now on

* The timeout for fetching feeds is now user-adjustable (default is
  old static value of 30s)

* Bundle::Olive created and uploaded to the CPAN to handle deps

* Olive now prints startup messages to STDOUT for the benefit of users
  on slower machines

* Olive can now detect if its stor1y database has been deleted and
  self-repair

* The (very in-progress) manual is now included and can be launched in
  the defined external browser with C-n



Changes for b5 -> b6
-----------------------------------------------------------------------

* Titlebar can now be hidden, gaining an extra line of real estate

* Newlines in entries were being converted to ''. Now they're
  converted to ' '.

* ...and multiple strings of whitespace is being converted to a single
  space

* Deps checking moved to external script called by Makefile; now
  reports all missing deps instead of just the first one encountered.

* Licensing has changed from Revised BSD to MIT/X11. They're legally
  the same license, but the X11 doesn't have the "which version?"
  problem.


Changes for b4 -> b5
-----------------------------------------------------------------------

* HTML now stripped from story titles

* Recurring error dialog crashing bug fixed

* Feed polling now disabled while dilogs are open


Changes for b3 -> b4
-----------------------------------------------------------------------

* Installation now via Makefile (see INSTALL)

* Feed properties editing implemented

* Marking feeds as forced now actually enables a forced refresh.

* Single stories are now mark/unmarkable as read. This is now bound to
  m/M; mark/unmark all has been moved to ,/<

* Feeds of unrecognized types are now marked as dormant and will be
  ignored until that status is unset via the feed edit panel

* Status line bolded for better visual separation

* Revision number yanked from titlebar, moved to (Non-Secret) About Box

* Screen initialization and redraw tweaks

* URL dispatching bug fixed

* STDERR now logged to ~/.olive/errors.log


Changes for b2 -> b3
-----------------------------------------------------------------------

* >>> SEE README FOR IMPORTANT NOTICES

* Sort options are gone. There is once again just the One True Sort
  Method, but this time it's way better than the last one.

* Olive now sends conditional requests for feeds before fetching them
  and only does the actual fetch if the server reports that the feed
  has been changed since last fetch (IOW, it checks for HTTP 304
  response codes -- other codes will be handled in the future).

* Feed removal interface added

* Story list status line now survives focus-switching

* Story list status line presentation significantly overhauled

* New config option: "Link command"

* New function: open the selected story's link using the link command

* Several keybindings changed

* Help box is now scrollable

* Story db is now vacuumed on every startup (keeps size down and speed up)

* I _believe_ the dialog crashing bug has been dealt with

* Optimizations in display and list-handling code


Changes for b1 -> b2
-----------------------------------------------------------------------

* Network error dialog said "There was a problem problem..."; repeat
  fixed.

* Null stories and titles are now caught and handled properly.

* Olive would ABEND when a feed contained only a single <item>. Fixed.

* HTML header tags are now text-ified.

* Items in the story list and the story title (when it occured) were
  being forced to UTF-8 all the time. This fixed a formatting offset
  bug under uxterm, but caused another when NOT under uxterm. Now this
  only happens when $ENV{LC_ALL} matches /UTF-8/.

* '[' and ']' keys now work fine when Unread On Top is enabled and
  ENTER works as expected as well

* Previously, both stories older than 99 days and stories with
  timestamps of epoch (i.e. with no time given in their feed) showed
  up as "+100d". Now genuinely old stories are "+99d" and stories with
  time epoch are "???".

* Previously, if XML::SAX was installed, Olive's internal XML parser
  object would use that over the listed prerequisite of
  XML::Parser. However, XML::SAX is (of neccessity) far more
  heavyweight and slower than XML::Parser due to many features Olive
  does not need. XML::Parser is now used all the time.

* The status message associated with feed polling (i.e. "N feeds
  updated at HH:MM") was dropping leading zeroes from the
  time. Fixed.

* Dropped the timeout on fetching things over the network from
  LWP::UserAgent's defaut of 180s to 30s.

* Leading and trailing spaces are now trimmed from story links and
  titles before insertion into the db

* The story list can now be sorted oldest-to-newest
