Changes in BNR2 & BNR3 Beta 0.14.7
- Fixed rare problem of some articles causing Access Violation and failing
  when trying to perform any commands on them when the hierarchy view is
  disabled.
- [Linux] Parsing of command-line parameters now treats forward slashes at
  start of a path correctly instead of treating as start of a parameter.

Changes in BNR2 & BNR3 Beta 0.14.6
- The logging flag no longer gets reset to match parent server folder when
  server is set to use parent settings.
- Fixed broken exit/shutdown when idle features.
- Response handler now accepts all 2xx responses to the MODE READER,
  AUTHINFO PASS and NEWSGROUPS commands instead of only accepting the
  expected response codes.
- Minimized status caption/hint now shows condensed ETA information.
- [Linux] Fixed problem with decoder not being able to find and merge 
  multipart articles due to unescaped wildcard characters such as [.
- [Linux] Implemented TDirScan.GetFiles.

Changes in BNR2 & BNR3 Beta 0.14.5
- Fixed problem with applying default values for Delete selected file(s)
  and Delete selected read-only file(s) queries.
- Added support for sorting by shortened author field values instead of
  always doing Author sort based on the full author field values.
- Fixed problem with the Mark as Read when closing group value displaying
  as Ask Me in the Group Properties form and getting reset to that value
  when accepting changes to the group's properties without remembering to
  set it back to the desired value.
- Setting Primary and Secondary sorts to the same column no longer causes
  additional reversals of the sort order and the Secondary sort column now
  reverts to Filename, or Offset when Filename is the Primary sort column.
- Fixed AV error when attempting to sort Queue by Group column when one or
  more queued articles is assigned a NULL primary group.
- Connections now changes to Error state and output a warning message when
  DNS Lookup fails instead of silently aborting the connection attempt.
- Fixed bug in NZB import causing resizing of segment list on each segment
  processed instead of every 128 segments processed.
- Fixed infinite looping bug in XML parser when parsing files containing 2
  or more <!DOCTYPE ...> tags.
- Relaxed rules for NZB file parsing to attempt to handle more data from
  corrupt NZB files.
- Increasing number of connections to a server now checks the labels of
  existing connections and fills in any gaps instead of adding all the new
  connections to the end of the list with possible duplicate labels, which
  would result in multiple connections writing to the same log file.
- Recuding number of connections to a server now delays removal of busy
  connections until they finish their current item instead of dropping the
  connections immediately.
- Double-Clicking a group name on Newsgroups page now properly updates the
  display to reflect the new subscription status.
- Unsubscribing from an open group now attempts to close the tab for that
  group before removing it instead of opening an error box and aborting.
- Added popup hints to the Newsgroups and Queue grids.
- Fixed problem with order of subscribed groups and group folders getting
  mixed up on Groups page after user manually rearranges them.
- Fixed problem with AV's during shutdown when using server folders.
- Rewrote code for saving servers list to avoid potential infinite loops.
- Clicking inside the About box credits area now restores focus to the OK
  button and only attempts to launch real URL and email links.
- System Tray icon now shows the specified title string in the tooltip box
  instead of nothing at all when the "Info to show on the caption and in
  the taskbar button" setting is set to "Always show title" in Options |
  Appearance | Caption & Statusbar.
- Changed server-group code to switch from a read lock to a write lock
  when creating new server-group objects during a lookup.
- Adjustment to HandleGROUP to try to detect lost connections and exit out
  without sending another command to the server.
- Modified XOVER exception handlers to attempt to continue to next article
  when a bad article is encountered instead of aborting the rest of the
  header download and stalling the server.
- Added queue size in bytes, ETA and download rate information to stutus
  information that appears on both the statusbar hint and the title bar
  (when configured to show the status information instead of the title
  string).
- Eliminated unnecessary white space padding between ETA and download rate
  on toolbar for the queue.
- Changed lower limit for number of items to keep in search history to 0,
  so that user can disable search histories.
- The selection info panel on the statusbar now shows accurate part, file
  and size data when selecting multiple expanded hierarchy rows.
- Added exception handlers around calls to dump raw header data when using
  the -dump command-line parameter to prevent BNR from not storing the new
  article data when a problem occurs trying to write to the dump file such
  as dump file target HD full, or dump file is locked by another process.
- Fixed a bug in date/time stamp parsing causing seconds to be ignored and
  its value being combined with +/- time zone adjustment value leading to
  potential integer overflows and invalid times.
- Added exception handler inside date/time stamp parser to quietly ignore
  invalid integer values instead of throwing a Range Check exception and
  failing to store article data.
- Fixed problem with connections stalling after the server disconnects the
  connection and BNR reestablishes the connection.  This problem may have
  also been part of the cause of the initial disconnect by the server as
  well.
- Fixed problem with inflated values for selected article, file and size
  statistics in status bar in certain situations when selecting multiple
  rows in the Hierarchy view.
- Numerous minor optimizations, such as adding the const directive to
  string and array parameters passed into various functions that do not
  modify those values.

Changes in BNR2 & BNR3 Beta 0.14.4
- Fixed problem with loading Default value for Delete selected file(s) and
  Delete selected read-only file(s) queries.  Was overwriting the regular
  regular version's value with the read-only version's value and resetting
  the read-only version's value to "No".
- [Windows] Fixed problem with random garbage returned by browsing for a 
  directory.
- [BNR3] Now displays correct icon on main form.

Changes in BNR2 & BNR3 Beta 0.14.3
- Modification to yEnc decoding routines to make them more robust against
  mangling by ZoneAlarm.
- Fixed problem with refreshing headers by XHDR stopping after downloading
  Message-ID's without downloading the other fields causing those articles
  to only appear in the group when also available on a server that uses
  the XOVER command.
- Fixed problem with freeing the server-group offset maps too frequently
  causing them to be reloaded more than necessary.  This should help with
  delay the heap fragmentation problem when downloading headers with the
  XHDR command.
- Reduced chance of duplicate refreshes when using chunks.  Should also
  prevent some other phantom refreshes.
- Toggling the Hierarchy view for a Message-List, now turns off the Use
  Parent Settings option for the group so that this setting will be
  remembered between sessions.
- Altered download manager to download first match instead of last match
  when several queued articles are equivalent (same date, same score, 
  unknown Article-ID, downloaded by Message-ID)
- Fixed problem with "Use Parent Settings" option being toggled on when
  a group's default primary sort options are set to sort in reverse on
  the Group Properties | Sorting tab.
- The default Primary & Secondary sort options for root group folder are
  now initialized to Subject & Filename instead of Offset and Offset when
  launching BNR without an existing configuration file.
- Secondary sort column header now displays "(2r)" instead of "(2)" when
  sorting in reverse order.
- Default secondary sort column now honors its own reverse option instead
  of reverting to match primary sort column's reverse option.
- The "Offset" option for the default primary/secondary sort column is now
  replaced with "(default)", which more accurately describes how it is
  handled by the sort algorithm.  This value corresponds to "Subject" for
  the primary sort column, or "Filename" for the secondary sort column.
- Setting the default primary sort column to "(default)" ("Offset") no
  longer resets default secondary sort column to "Filename" unless the
  default secondary sort column is set to "Filename" or "Offset".
- Setting the default secondary sort column to "(default") ("Offset") is
  now honored when default primary sort column is not also set to 
  "(default)" ("Offset").
- Settings on Options | Confirmations page now applied when user clicks on
  the OK or Apply buttons and discarded when clicking Cancel button rather
  than applying them immediately.
- Added settings to confirm removal of servers, groups, folders & files on
  Options | Confirmations page instead and removed general confirmations
  setting from Options | General.
- Added setting to Options | Appearance | General for displaying only the 
  author names when FROM headers contain both author names and email 
  addresses.  Works when FROM header matches one of several commonly used
  methods of including both a display name and email address in the FROM
  header.  Displays the full FROM line when no display name detected or a
  null display name detected.
- Queue.xml file now remembers current state of partial header refreshes
  instead of converting all header refresh items to GROUP commands.
- Fixed problem with connections stalling under certain circumstances such
  as trying to handle chunks.
- Implemented sorting of sub-nodes by current sort columns when expanding
  a hierarchy node instead of leaving them in a random order.
- Closing a hierarchy node now automatically scrolls up to fill any empty
  space at bottom of screen with hidden rows.
- Modified NZB Import form to show "Download Directory" instead of just
  "Directory" to clarify the purpose of the Download Directory field.
- [BNR3] Optimization to SQLite version of GetMap2 suggested by Slain.
- [Linux] Changed code to use QTrayIcon component for minimization to the
  system tray.
- [Linux] Added Simon Kissel's runtime fix for the Kernel 2.6.8 Fedora 
  Core 2 Exec-Shield.

Changes in BNR2 & BNR3 Beta 0.14.2
- Fixed problem with scrollbars not updating properly after resizing the
  columns in a Message-List page.
- Fixed some problems with selected articles resetting to null under 
  certain circumstances immediately after opening a Message-List page.
- Fixed potential problem with secondary sort by Author or Filename when
  using the new sort method.
- Fixed several problems with auto-downloading articles that match Want 
  Filters.
- Added support for using Article-Only servers to download articles that
  were queued by the Auto-Download option on Want Filters.
- BNR now only defaults to the Servers page on startup when there are no
  servers currently defined.  It defaults to the Groups page at startup 
  when at least one server is already defined.
- Fixed closing of Message-List, Image Viewer & Text Viewer so that they
  switch tabs prior to closing instead of after closing.
- Fixed CLX bug causing current page to change whenever a page is removed
  even when the page being removed is not the current page.
- [BNR3] Attempting to open 2nd instance using same DB will fail with more
  gracefully with a message on splash screen like BNR2 instead of with a 
  popup error box.

Changes in BNR2 & BNR3 Beta 0.14.1
- Fixed problem with marking articles as read on closing group not working
  when hierarchy view turned off.
- Fixed problem with messed up filters on Open & Save dialog boxes.
- Fixed problem with Open & Save dialog boxes not returning the selected
  filename.
- Fixed problem with auto-shutdown only working when BNR is the currently
  focused application.
- Modified new sort method (-test1 command-line parameter) to compare the
  actual strings for all columns, not just the subject column, to ensure
  accurate sorting of all text columns.
- Applied new patch to fix form z-ordering problems.
- [Linux] Modified splash screen to prevent it from becoming a stay on top
  form in some Windows Managers.

Changes in BNR2 Beta 0.14.0
- Fixed a bug in IPv6 API detection code that prevents BNR2 from taking
  advantage of third-party IPv6 packages when Microsoft's version is not
  present.
- Added chunk size option to server properties (Advanced Tab) for breaking
  up large header requests into multiple smaller refreshes.
- Many formatting adjustments to forms to better support localized text.
- Added <Esc> key to abort support to several forms that did not already
  have allow it.
- Internal Text viewer now allows advancing to prev/next file of same
  extension just like Internal Image viewer instead of only doing so for
  .TXT files.
- Added some additional file extensions to the default executable file
  types list.
- Fixed broken deletion of entries in Optons | Execute | Executable file
  types list & made it restore focus to Options form after the query.
- Slight modification to queue.xml file specs to make it well-formed.
- Fixed problem with header refresh lower Article ID bounds sometimes
  being changed to an invalid value higher than upper bounds when the
  connection handling that item times out.
- Creating Queue.xml & NZB files now encodes special characters that might
  be present in all string fields (i.e. ampersands in Message-ID's) rather
  than only in the strings most likely to need them.
- Patched XML parser to preserve unescaped ampersands and undefined 
  entities instead of removing the & character and matching ; character to
  help support importing improperly coded NZB files as well as Queue.xml
  files generated by old versions of BNR2.
- "Mark want filter matches for download even when file is incomplete" 
  option added to Options | Download page.
- Fixed a UUE decoding bug where special text denoting end of an multipart
  segment was being misinterpreted as part of the encoded data stream
  resulting in corrupted files.
- Double-clicking on subject line of a file, excluding fileset header rows
  in the hierarchy view, now attempts to execute the file.
- The auto-shutdown when finished feature now only considers BNR to be idle
  when there are no dialog boxes currently open, so it doesn't keep trying
  to shutdown while user is viewing an options form.
- Fixed problem with the Remember option to mark or not mark all articles
  as read when closing a group reverting back to Ask due to the Use Parent
  Settings option being turned on.
- Changed Connection Manager to perform checks much less frequently to try
  to improve performance with large queues and full HD.
- Added history to search filter on Newsgroups page.
- Setting the "Expired in ___ days" value to any non-zero value will now 
  automatically check the "Filter is Active" option on Kill/Want Filter
  Properties form.
- Score field on Kill/Want Filter Properties form now allows full range of
  -128 to 127 instead of only -50 to 50.
- The "Expires in ___ days" field on Kill/Want Filter Properties form now
  allows up to 999 days before expiration instead of only 100 days.
- Added automatic enabling/disabling of Apply button on several forms.
- Added ability to resize some forms that were previously a fixed size.
- Rearranged some items in main menu & context menus to match.
- Added Reset command to Groups context menu and changed accelerator from
  Alt-E to Alt-S to eliminate conflict with the Remove menu item.
- Fixed a duplicate accelerator conflict in Column Configuration Windows.
- Patched yDecoding routines to attempt to correctly decode articles when
  attachment header is mangled by ZoneAlarm.
- [Windows XP & Linux Only] Added themes support.

Changes in BNR2 Beta 0.13.3
- Fixed bug in offset map code causing all headers for a group to be
  redownloaded on each refresh, instead of only the new headers.
- [Linux] No longer requires script to bind QT libraries.

Changes in BNR2 Beta 0.13.2
- The server directory naming function now pays attention to the invalid
  characters list to ensure that a valid name is created.
- Modifications to code for saving multipart article parts:
  - Preserves old file when it fails to append the old file to end of new
    part.
  - Deletes new partial file when it fails to write the new data prior to
    appending the old file.
  - No longer saves duplicate copy of a part in partial file claiming to
    be multiple parts after failing to append old file to end of new part.
  - More accurately detects partial files for appending/merging.
- Fixed integer underflow / AV problem with enumerating RAS connections on
  systems that have no RAS connections (no dial-up connections).
- Fixed download stats to use 64-bit integers to prevent overflowing the
  downloaded byte values after downloading 4 GB during a single session.
- Fixed cell color caching anomalies when first redrawn cell is one of the
  special columns (Filename, Size or Parts).
- Changed Connection Manager thread from idle priority to lower priority.
- Fixed NewsRC export function to not output lines with blank group names.
- Modifications to B+Tree scattering code to eliminate allocation of an
  extra buffer, which eliminates a potential deadlocking problem with
  corrupt databases, and other corrections to B+Tree code submitted by
  Peter B. Clements.
- Changed confirmations options to allow defining a default response with
  or without auto-apply applying the response.
- Article decoder now retries up to 5 times over a 0.5 sec period when it
  attempts to rename or delete a partial file locked by Windows as in use.
- [Linux] Added support for sending files to Trash.

Changes in BNR2 Beta 0.13.1
- Fixed query box so that it doesn't immediately close when pressing <Esc>
  to close an open Message List page.
- Changed default button to the Mark All Read query box from Yes to No to
  reduce chances of accidentally marking all articles as read by mistake.
- Added code to fix some form scaling problems on certain resolutions and
  DPI settings in Query, Progress & Shutdown forms.
- Removed border icons from Shutdown form.
- Fixed a key deadlocking bug in key lookup function when attempting to
  lookup an invalid offset.
- Fixed 2 type conversion problems with updating of next free sector 
  offset, which could lead to invalid value and "No free space left to
  insert key" errors.
- NZB Import form now loads initial NZB directory, download directory,
  score, and other options from the NZB section of the BNR2.ini file and
  writes the new values back to that file when the form is closed using
  the OK button.
- Modification to header refreshing code that should prevent BNR2 from
  redownloading the same block of headers repeatedly during a single
  refresh cycle, without preventing those articles from being rechecked
  in another refresh cycle at a later time.
- Added flushing of Article, Subject & Filename table buffers whenever
  the subject mask & guessed filename fields are updated when downloading
  articles to reduce chances of corrupted Subject & Filename data in the
  event of a program crash.
- Fixed Validator & XHDR Parser to recover when an invalid Article-ID is
  encountered instead of skipping all remaining articles in the current
  buffer.
- Want & Kill Counters now get reset to 0 when database is reset.
- Modified connection code to cycle through all IP addresses returned by
  the DNS lookup when unable to connect to the first result.
- Modification to 4xx handling code to check if article still queued by
  at least one other server-group before trying to remove item from queue
  and clear handler regardless.  This should help when using article-only
  servers without the Ignore 423 option.
- Other miscellaneous minor adjustments.
- [Linux] Fixed problem with FreeSpaceCheck always checking root.

Changes in BNR2 Beta 0.13.0
- Added support for importing/exporting NZB files.
- Implemented IPv6 support for Linux and IPv6-enabled versions of Windows.
- Added exception handler to execute handler for the server connections to
  prevent entire program from crashing due to exception errors occurring 
  in this handler.
- Added exception handler around Message-List KeyUp handler to try to 
  catch exception errors attempting to process commands instead of closing 
  down BNR2.
- Modified code for refreshing Message-list rows to use last part of 
  multipart article set instead of the part that finished downloading last
  when viewing the Message-List in combined mode so it will match the row 
  containing that set and redraw that row when the parts download out of 
  order.
- Modified Message-List code to recompute Wanted and Killed article counts
  at the same time it recomputes New article count.
- Fixed a problem with linking queued multipart items during loading of 
  queue.xml file at startup.
- Eliminated special article offset codes for currently downloading 
  Article-ID's, which are no longer needed since connections no longer try
  to help each other. This should allow servers to resume where they left 
  off in the event of a lost connection while in refreshing headers.
- Added "Don't check for new/expired articles within range" option to 
  Server Properties | Commands tab to skip LISTGROUP or XHDR Lines 
  commands to look for new and expired articles within the Article-ID 
  range.
- Fixed an Integer Overflow problem in FileCheck code when checking for 
  size differences for name/exact matches.
- Fixed an Integer Overflow problem adjusting article and file sizes of 
  yEncoded articles when parsing subject lines.
- Replaced Yes/No & Retry/Ignore message boxes with a custom message box
  with keyboard shortcuts for the buttons.
- Some Yes/No queries now have option to remember the answer and stop 
  asking.
- Added Confirmations tab to Options for changing the Yes/No/Ask state of
  new memorizable query answers.
- Increased upper limit for Max Headers to Download options on Server and
  Group Properties window from 100,000 to 2,147,483,647 (max signed 
  integer).
- Fixed several type conversion problems with article data.
- Fixed AV problem attempting to display active file/group name when 
  lookup of current JPEG/TXT/group page returns a null result.
- Modifications to startup functions to improved the performance of the
  splash screen so that it can redraw itself when necessary.
- Moved Connection Manager code out of main thread into its own background
  thread for much better performance with large queues.
- Modified header refreshing code to force flushing of MsgLst.bnr buffers.
  Should help reduce amount of lost data due to abnormal program 
  terminations.
- Added flushing of MsgLst.bnr buffers after resetting a group.
- Fixed problem with B+Tree code using 0 (zero) in some calculations that
  should use the size of the table due to variable scoping issues.
- Fixed problem with expiration code preventing article keys from being 
  removed leading to TArticle.Write...RefCount=0 errors and corrupted 
  data.
- Fixed an index range problem with loading Expired.bnr file into buffer
  to delete expired articles.
- Modified article decoding routines to be able to recognize variable 
  white space when searching for encoding method used.
- Added names for extra columns in Group Properties | Sorting tab options
  so the column names show up by name instead of by number.

Changes in BNR2 Beta 0.12.7
- Added exception handlers around article header update code to issue 
  warnings about database corruption and then attempt to recover instead
  of failing.
- Modification to LISTGROUP command to not mark the command as completed
  until after the last buffer has finished downloading to prevent some 
  AV's resulting in lost headers.
- Modification to header handling routines to use the Group object present
  in the queue items instead of the connection's active group string to 
  fix problems when skipping GROUP commands such as connections constantly
  redownloading the same bad article.
- Optimized out some other local Group object & Group name string 
  variables in favor of using the queue item's Group object instead.
- Further optimization of Message-List DrawCell code to cache previously
  computed color type values when refreshing an entire row at a time 
  (scrolling).
- Fixed bug on Newsgroups tab causing excessive rows when filtering the
  newsgroups list.
- Modified Connection handler to accept non-standard 202-299 responses as
  successful connections.  Will issue an informational warning if warning
  level is set to all.
- Modified Connection handler to not abort with an error in the event the
  NEWGROUPS command returns a 5xx (unsupported) response.

Changes in BNR2 Beta 0.12.6
- Implemented Killed column for Groups page.
- Added storing of Wanted and Killed article counts in BNR2.ini file.
- Implemented adjustment of New/Wanted/Killed article counts when toggling
  flags on the Article Properties page.
- Fixed AV problem in Connection Manager, which also prevents resetting of
  target server to "any" when the chosen server does not have the article.
- Added Suspend & Hibernate methods to the Shutdown tab in Options.
- Fixed failure to copy parent settings and remember the "Use parent 
  settings" options in newsgroups.
- Added null pointer check after all GetBuffer calls to ensure that the 
  function succeded.
- Articles bodies saved as text now excludes duplicate period in lines 
  that begin with a period.
- Modification to unique filename generator to force it to find the next
  lowest unused "filename(#).ext" name instead of appending "(2)" 
  multiple times.
- Hack to prevent resorting rows in Newsgroups, Queue & Message-List grids
  when resizing the column widths or even just clicking in the resize 
  region.
- Modified Newsgroups page to stop constantly resizing the column widths 
  every time the user switches back to that page or resizes the main 
  window.
- Queue.xml file structure modified to include Server-Group-ArticleID 
  information for all queued articles to eliminate scanning server-group
  maps at startup.
- Increased average download rate history data from 5 seconds to 15 
  seconds.
- Added server option to skip GROUP commands when downloading articles.
  Only available when downloading by Message-ID.
- The FreeSpaceCheck now checks the size of the closest existing 
  directories for queued files when the full target directories do not 
  exist yet instead of going ahead and creating them before any parts have
  been downloaded.
- Deleting text in the default download directory field on the Server 
  Properties window now reverts to the parent folder's default download
  directory field.
- Added new setting on Options | General tab to choose method use for 
  Quick Filtering: case insensitive, case sensitive, or RegEx.
- Optimization to Message-List grid's DrawCell handler to speed up 
  redraws.

Changes in BNR2 Beta 0.12.5
- Added check for underflow when adjusting Wanted counts when manually 
  toggling the Wanted flag.
- Fixed problems with adding to Wanted counts every time the Killed flag 
  is manually toggled on or off.
- Fixed problem with queue grid moving up too far while at the end of the
  queue when it refreshes.
- Added option to Options | Download page to allow using lower priority 
  servers while higher priority servers are currently either stuck in a 
  retry loop or offline (error or user disconnected).
- Fixed some range check errors in map lookup and sorting functions used
  by PartCheck and elsewhere.
- [Linux] Modified tray applet code to skip creating the tray applet when
  there is no tray to receive it, and to free the tray applet in the event
  that it encounters a serious exception trying to initialize the tray 
  applet.

Changes in BNR2 Beta 0.12.4
- Fixed problem with Download option on Want Filters not always queueing 
  up the Article-ID's.
- Modified code for loading queue.xml to ensure that the default flags set
  are included in header and body items just in case.
- Added exception handler around the queue.xml loading code to catch 
  errors some may be receiving trying to load the queue, and try to 
  recover instead of causing the program to terminate.
- Added a catch all exception handler around all code that executes after
  creation of the main form to log proper error information in the log 
  instead of having the OS report the exception in a message box with 
  nothing written to the log.
- Modified code for computing Ready percentage for group refreshes to only
  compute based on the number of Normal and Header servers instead of all 
  servers.
- Added new queue color type for items currently being downloaded.
- Fixed problem with editing Kill/Want filter RegEx string that would move
  cursor to the end of the string when trying to delete part of the 
  string.
- Modified code for reloading queue from queue.xml to not enqueue the 
  Article-ID's from Header-only and Dormant servers that still have an old
  server-group file in the server directory.
- Modified Download Scheduler to never try to download articles from the 
  Header-only and Dormant servers.
- Fixed NewsRC Export code to be able to export the full list of 
  newsgroups instead of just the filtered list.
- Fixed problem when using the old sort function (default) and the user 
  tries to sort by the Score, Date, Time, Download Directory, or Lines 
  fields, which are not supported by the old function.
- Modified Queue grid refresh method to reduce chance of hidden queue 
  items when the grid is nearly empty.
- Modified Message List score editor to match the height of the cell with
  a minimum height of 18 pixels.
- Modified Options dialog to do better job repositioning the OK, Cancel &
  Apply buttons based on font scaling and resizing of the form.
- Fixed problem with Newsgroups tab loosing current sort order when 
  subscribing or unsubscribing from a group while sorted by one of the 
  server columns.
- Added thousands separator to article counts in the Marked, Wanted & New
  columns on the Groups page.
- Added thousands separator to existance counts and total number of 
  newsgroups count on the Newsgroups page.
- Made Newsgroups columns resizable and moved all of the server columns to
  the left 2 pixels to keep the rightmost digits of the last server's 
  counts from being covered up by vertical scrollbar.
- [Windows] Modified hints to use the user's defined ToolTip color scheme
  from Control Panel | Display | Appearance | Advanced instead of the 
  default color scheme.

Changes in BNR2 Beta 0.12.3
- Fixed bug in directory validation code to recognize drive names when the
  path is less than 6 characters long.
- Fixed bug in directory validation code to recognize UNC paths (again) 
  and expanded UNC support to also recognize paths to any domain instead 
  of just local drive letters.
- Modified behavior of the max headers settings for both servers and 
  groups to not only download up to x headers but also expire all articles
  older than the most recent x headers instead of adding up to x 
  additional headers on each refresh.
- Fixed an AV condition in TViewList.InvalidateArticle.
- Fixed a problem with TSrvGrp.AdjustServerFile that could result in 
  corrupted article offsets whenever it expands the offset map to insert 
  new headers at the beginning.
- Modification to XOVER handler to check for other blocks of missing data,
  just like XHDR commands instead of just assuming that it was done after 
  the first XOVER command.
- Added new Ignore 423 (No Such Article) option to the Options | Advanced 
  page.  With this option set, articles will not expire due to receiving 
  this error attempting to download articles.
- Modification to code for handling finished queue items to make header 
  refresh items automatically refresh the screen to show they are handled.
- Added exception handler around LoadRASConnections code to only report 
  these error when showing all warnings and also to give back more 
  information about where in the function the error occurred.
- Added exception handler around code for initializing use of the system 
  tray to allow program to continue working without this ability.  If the
  program fails to initialize access to the system tray, it will disable 
  the Hide feature.
- [Linux] Added support for tabbing backwards in various page controls.
- [Linux] Added check for failed attempt to lookup Atom in code for system
  tray icon, which should fix the BadAtom errors. 

Changes in BNR2 Beta 0.12.2
- Fixed problem with hiding/showing/disabling/enabling of Newsgroups menu.
- Changed Force Non-Exist command shortcut from <Alt><N> to <Alt><X> to 
  remove conflict with <Alt><N> shortcut for the Newsgroups menu item on 
  the main menu.
- Modified some key handlers to pay attention to modifier keys (Shift, 
  Ctrl, and Alt).
- Fixed bug in 0.12.0 & 0.12.1 that caused false assertions failures 
  leading to dumping sectors to DB log files.
- Fixed bug in 0.12.1 that caused infinite loop in the event that one of 
  the above mentioned assertions was triggered.
- Modified server status messages to include a thousands separator in 
  header download progress information.

Changes in BNR2 Beta 0.12.1
- Modified code for reading download directories from the BNR2.ini file to
  add the trailing path delimiter whenever it is missing.
- Modified code for validating directories so that if the path delimiter
  is included in the trim character list, it will be ignored at the very
  beginning or end of the path.
- Fixed bug in 0.12.0 where the < and > surrounding the Message-ID's of
  queued articles were being written to the queue.xml file, causing all
  queued articles to be skipped when reloading the queue after a restart.
- Fixed selected articles size on status bar to display the size of only
  the selected parts instead of the size of the full file times the number
  of selected parts when viewing a group in non-combined mode.
- Fixed selected articles count on status bar to display the correct 
  number of selected articles when viewing a group in non-combined mode.
- Fixed scoring of selected articles to only consider the selected parts
  instead of also repeatedly adjusting all previous parts to each selected
  parts when viewing a group in non-combined mode.
- Fixed bug in filtering articles to hide those that have a file size 
  between a specified range.
- Fixed bug in code that saves download directories for groups and group
  folders so that it no longer omits the field when it matches the 
  DataStore path (the pre-0.12.0 default path), which causes it to revert
  to the new default path on the next launch.
- Modified code for dumping database sectors to log files to include an 
  indentifier to show which functions caused those sectors to be logged.
- Modified code for dumping database sectors, so that logging of errors
  after startup is complete only occurs when the warning mode is set to 
  Verbose.
- Modified code for determining when to do a group validation so that it
  does not waste time performing a validation when the entire new range of
  articles is after the old range without any overlapping articles.
- Fixed handler for 423 error to not attempt expiring any articles off of
  article-only servers, which would mess up the reference counts.
- Added an option on Options | Advanced for turning off the very slow scan
  for possible articles from article-only servers when loading the 
  queue.xml file.  This option will probably be temporary until the 
  queue.xml file is modified to include the additional information 
  necessary to load all items without scanning the database.
- [Windows] Replaced code for determining user's My Documents folder with
  a version that should work on Win95 and NT 4.0 systems without IE4.0
  installed so that users with one of those OS's can still use BNR2 
  without installing IE4.0. This path also now defaults to 
  "C:\My BNR2 Downloads\" in the event the code returns an empty path.

Changes in BNR2 Beta 0.12.0
- Optimized FreeSpaceCheck to hold the article lock as briefly as possible
  so that other threads can use it.
- Modification to FindKeysByOffs code to prevent infinite loop in the 
  event that the offset is never found.
- Added stack dump to all generic exception handlers to help in tracking
  down causes of exception errors.
- Added new server mode setting to Server Properties | Advanced page.  The
  available modes are: "Normal" (use this server as normal to get headers
  and articles), "Headers" (only use this server only to download 
  headers), "Articles" (use this server only to attempt to download 
  articles based on Message-ID's downloaded by other servers), "Dormant"
  (don't use this server at all).
- Fixed bug in Download Scheduler that caused invalid server targets to 
  loop infinitely.  Invalid server targets now revert to any target.  
  Those using this "feature" to download articles from servers without 
  downloading headers must now use the new "Articles" server mode for 
  this.
- Added Newsgroups menu to main menu containing all of the same commands 
  that appear on the toolbar of the Newsgroups page.
- Changed default root Newsgroups folder download directory from the 
  DataStore path to a sub-directory under the user's My Documents folder
  [Windows] or the $HOME directory [Linux].
- If any other subscribed newsgroup or newsgroup folder fails to load its
  DecodeDir field from BNR2.ini, it now defaults to the download directory
  for its parent folder instead of the DataStore path.
- Added check for need to flush previous article data to disk before 
  resetting to a new blank article.  Failure to do so could lead to 
  forgotten changes to articles being modified by other threads during
  header refresh.
- Added check for need to flush previous article data to disk before 
  expiring another article.
- Optimizations to lazy writing to eliminate some excessive writes during
  expiration of articles.
- Completely rewrote -ini parameter handling code.  The code now confirms
  creation of paths that do not exist instead of silently reverting to the
  default path and filename.  If the last part of the path after the final
  path delimiter is not an existing directory, is not an existing file, 
  and does not end in the expected .ini extension, then assume this is 
  part of the path, not the filename.
- Fixed file/directory validation code to check for invalid characters
  when validating a full path, which only applies to manually entered 
  directory names.  Previously only checked for them when validating a 
  single individual file or directory name, which includes auto-appended
  sub-directories and all names of downloaded articles.
- Added directory validation to download directories entered in the group
  properties window.
- Added directory validation to download directories loaded from the INI
  file just in case user has altered this file.
- Modified Connection Manager to only start one auto-connect attempt at a
  time instead of ending up with the max number of connections all ending
  up in a retry loop even when there is only one item that the server 
  could handle.
- Added "Initiate parallel auto-connect attempts" option to the Server
  Properties | Connections tab for reverting to the old method of starting
  multiple parallel auto-connect attempts to a single server.
- Fixed phantom refreshes of groups immediately after resetting a group.
- Added ability to use <Ctrl><Tab> and <Shift><Ctrl><Tab> to tab forward 
  and backward through tabbed page controls that did not support it 
  before, and fixed problem with failing to wrap around to the other end.
- Added <Ctrl><P> as a global keyboard shortcut for pausing and unpausing
  the queue.
- Optimized code for marking articles as read/new to update the visible
  articles list, including removal of expired articles without needing to
  resort to a full resort for better performance.
- Selected the options for Connect-On-Demand, Auto-retry, and download
  articles using the ARTICLE command by default for the root Servers 
  folder.
- Changed default shutdown computer when finished option from Exit to 
  Shutdown.
- Added a query to open a connection for downloading the list of 
  available newsgroups immediately after adding a new server.
- Fixed function for toggling flags (such as the Save As Text flag) on
  selected articles while in uncombined mode only affects specific parts
  that are selected instead of all of the previous parts in any selected
  multipart article parts.
- Fixed a problem with detection of encoding method that would sometimes
  misidentify part of a yEncoded article as being UUEncoded resulting in
  that part being saved as 45 bytes of garbage.
- Modified NewsRC export function to default to exporting only the 
  subscribed groups.
- Added options to include Lines & Files columns on Message-List pages.
- Added ability to sort the master newsgroups list by the article counts 
  by clicking on the column heading of any server.  Clicking on the column
  heading for newsgroup name sorts by the newsgroup name.
- Added "Number of past quick filter searches to keep in history" setting
  to Options | General.  Saved under the new MaxHistory field in the 
  config section in BNR2.ini file.
- Added flags field to queue items in queue.xml for storing the internal
  flags related to queue items.
- The article decoding routines now uses the Save as Text flag in the 
  queue item instead of the flag in the article record, so they will still
  save as text even if this flag was toggled off for the article itself.
- Fixed code for choosing color to display article in Message List pages
  based on the Marked, Killed, Wanted & Read flags so that all parts of a
  multipart article set are tested for these flags instead of just testing
  all parts for a Marked flag and then testing only the first or last part
  for the remaining flags.
- Fixed inversed secondary sort by Date or Time column.
- Fixed new sorting code to use part size instead of file size when 
  sorting by the Size column while in non-combined mode.
- Optimization to new sorting routine to reduce memory usage slightly.
- Added server name to some yEncode decoding error messages where the 
  error could have been caused by a bad download.
- Optimization to file/directory name validation function to store length
  of string instead of constantly recomputing.
- Fixed bug in network path portion of the file/directory validation 
  function that could try to look at characters beyond the end of the 
  string.
- Modified file/directory name validator to wait until it is almost 
  finished before truncating the path to the max path length limit since
  removal of any invalid characters from the name will help shorted the 
  name.  It now does this just before applying trim characters to the end
  of the name and the check for changing blank name to "noname".
- Altered handling of -quick parameter to still try to load the queue.xml
  file, if it exists.
- Optimized code for linking new multipart queue items to other queued 
  parts from the same set to only use the article class once per part 
  instead of once per part per each item in the queue.  Should reduce 
  bottlenecking with connection threads trying to access the article class
  when the queue is not paused.
- Modified code for marking articles for download to skip the mark 
  incomplete article sets query when viewing the Message List page in 
  non-combined mode.
- Optimized Queue-Connection interface to allow connections to remember
  which item it is currently handling instead of having to look through 
  the entire queue to find it.
- Fixed bug in Server-Group class that would give an AV in the event the
  program tries to lookup an offset in a server-group pair without first
  loading the server-group table into memory.
- Modified code for adjusting server-group file to ensure that the 
  Server-Group class is always released when it is finished so that header
  refreshes no longer leave the server-group tables loaded when they are
  finished and leaving the memory allocated.
- Added some additional validity checking and numerous other changes for
  simplicity, performance boosts, etc.
- Modified handling of response to GROUP command to send a new validation
  command (XHDR Message-ID) to confirm that the most recent overlapping
  Article-ID still points to the same article when the new min/max 
  Article-ID's are less than the old min/max Article-ID's to decide 
  whether or not it needs to expire all articles and download them again.
- Modified code for opening group to not perform the auto. FileCheck when
  header commands are still being processed by any connection at that 
  moment.
- Removed forced listgroup on manual refreshes.
- Added new color codes to the Queue page and made the colors user 
  configurable from the Options | Appearance | Colors & Fonts page.
- [Windows] When attempting to open a file that does not have a file
  association type assigned, the Windows OpenAs dialog box will be 
  triggered to allow creating a file association.

Changes in BNR2 Beta 0.11.7
- Fixed problem with Select All command on Message-List page.
- Fixed problem with free space optimization that could lead to underflows
  in count of marked articles on statusbar.
- Fixed a couple deadlocking conditions in manual and automatic 
  mark-for-download functions.
- Added an exception handler around code for optimized free space checking
  code to prevent connections becoming blocked for the rest of the session
  due to any exception errors that may occur inside the new code.
- Added an exception handler around TPartCheck.CheckItem method, which 
  should catch some errors previously caught in the XOVERHandler code.  
  This should allow the remainder of the buffered headers to be processed
  instead of being lost.
- Added an exception handler around TArticle.Expire method, which should
  catch some errors previously caught in the XOVERHandler code.  This 
  should allow the server to complete the article expiration step and 
  continue refreshing a group instead of getting stuck in "Selecting 
  Newsgroup".

Changes in BNR2 Beta 0.11.6
- Added some more error checking to break out of an infinite loop 
  condition in key lookup by offset code and not try to search for a null
  key.
- Modified INI file writing routines to only store the DataStore path in
  the INI file when it is different than the location of the INI file to
  simplify moving the database.
- Added ColumnID to error messages generated by exception errors in the 
  Queue and Message List cell drawing code to help pinpoint which part of
  the function is causing the error.
- Added check for null group pointer in Queue cell drawing code and 
  attempt to recover instead of throwing an exception.
- Added ability to change default sort order on Message List pages on a
  group-by-group basis.
- Added Articles | Combine Parts command to toggle whether or not articles
  in multipart article sets are combined into a single row on the Message
  List page.
- Modifications to article class to help ensure that changes to certain
  properties are saved before switching articles.
- Fixed queue loading function to use the same size value as the article
  marking code, so that queue size should remain the same after 
  restarting.
- Modified queue and FreeSpaceCheck to use a new structure that allows
  quick access to information about multipart articles to eliminate most
  database accesses in the FreeSpaceCheck function for significant
  reduction in CPU usage and sluggishness system performance when a target
  drive is nearing the free space limit or when checking a multipart set 
  containing a very large number of parts.
- Modified cursor switching code to be multithread aware.  Should 
  eliminate problem of cursor getting stuck in hourglass mode.
- Added additional validation and error messages to decoder code, which
  should reduce corrupted partial files due to failures.
- Fixed bug in code for looking up Message-ID's.
- Added new "Message-ID" column to list of available columns on Message
  List pages.
- Changed "Date" column on Message List pages to "Date/Time" and added new
  "Date" and "Time" columns to display only the date or time portion 
  instead of both the date and the time.
- New -auto command-line parameter to turns on the shutdown BNR2 when
  finished option so that the program will finish off any items in the
  queue and any auto refreshes and automatically exit.
- Added ability to turn off grid lines on the queue grid.
- Modified Column Configuration window so that the Auto Size flag is not
  turned on by default when adding a new column to the Queue or Message
  List column lists.
- Added Shutdown tab to Options form allowing user to choose the shutdown
  method to use: exit BNR, logout current user, shutdown computer, reboot
  computer, or poweroff computer. [Linux] Options to shutdown computer,
  poweroff and logoff only work when user is a superuser.  Only closes
  BNR2 when user is a normal user.
- Added ShutdownMethod field to BNR2.ini file for storing the user defined
  shutdown method.
- Added Cancel button to query for whether or not to wait for all 
  connections to finish their current downloads.
- Added ability to sort by Score, Download Directory, Date, and Time
  columns.
- [Linux] Fixed bug in FileCheck delete existing file command to make it
  case sensitive.
- [Linux] Added Hide tray applet for KDE.

Changes in BNR2 Beta 0.11.5
- Fixed modifications to row marking code that prevented marking 
  previously downloaded articles.
- Replaced the one period advanced option with an option to perform the
  free space checks on the root directory of the target drive instead of
  the actual download directory to get around bugs in the 
  GetDiskFreeSpaceEx function in Windows 95, 98, 98SE and ME. This option
  is on by default when creating a new install under an older Win9x-class
  version of Windows (95, 98, 98SE, ME), and off by default in an NT-class
  version of Windows (NT, 2000, XP).
- Removed extra characters from default invalid characters list since they
  are no longer needed with the above root directory free space check 
  option.
- Added Article Properties command to Articles menu on main menu and 
  Message List grid context menu.
- Changed default position of NewsRC Import window to center on the main
  window.
- Changed Queue page ETA to consider only current download rate instead of
  averaging the current and average download rates.
- Changed default error and dump log file paths from the program directory
  to the database directory.
- Added -error <path> command-line parameter to allow specifying the 
  location and/or filename for the error log file and changed the default
  filename from "errlog.log" to "error.log".
- Made queue.xml loading code more robust to help prevent loosing the
  entire queue whenever a bad item is encountered.
- Modification to directory/file name fixer function to allow specifying
  network paths in \\?\<drive letter>:\<path> format without the colon in
  the drive letter being removed as an invalid character.
- Fixed a bug in yEncode handling code that prevents detection of multiple
  files encoded in a single article.
- Fixed yEncode handling code to handle articles encoded by buggy
  yEncoders that report a single part article as multipart or report the
  wrong value for the end size for a single part article but report the
  correct size at the beginning.  And added warning messages for when
  these situations occur.
- Added support for decoding yEncoded articles encapsulated inside
  multipart MIME articles as "Content-Type-Encoding: x-yenc". Should now
  combine the parts into a single yEncoded file instead of issuing an
  "unexpected end of encoded data" error for first part and messing up all
  of the remaining parts due to assuming them to be encoded with Base64.
- Fixed problem with header refresh code that causes certain groups to
  redownload the entire range of articles on every refresh instead of just
  downloading the range of new articles since the last refresh.
- Hack to prevent some perfectly valid downloads from erroneously being
  discarded as Message-ID Mismatches.
- Hack to cut off buffered error messages when exceeds 64 kB limit instead
  of attempting to write them to the error log every 32 kB due to lack of
  thread safety & added lock around main thread code for accessing the
  buffered errors.  All errors are still written to the error log file
  regardless of this limit.
- [Linux] Modifications to Options, Column Configuration, NewsRC Import,
  and NewsRC Export windows for better scaling under varying screen
  resolutions.

Changes in BNR2 Beta 0.11.4
- Added <Ctrl>-<A> keyboard shortcut to Queue page for selecting all
  articles in the grid.
- Removed redundant <A> keyboard shortcut for selecting all visible
  articles in the Message-List page grid as <Ctrl>-<A> does the same thing
  and is the standard shortcut for the Select All command.
- Removed prompt for removal of selected server item when the <Delete> key
  is pressed while editing the server name.
- Modified error logging code to send buffered errors to errors page every
  32 kB and reset it to prevent running out of memory due to cascading
  errors.
- Trying new method of trimming the error log when it has exceeded 150% of
  its line limit to see if it clears the excess lines any faster than the
  old method.
- Fixed some possible memory/resource leaks.
- Slight optimization to some helper functions to use less memory.
- Fixed problem saving invalid/trim character lists to INI file where
  space character as first or last character in the list of invalid
  characters was being removed.  Now encoded space and # characters using
  #nn codes, where nn is the hexidecimal value for those characters. Other
  #nn codes encountered during import of the INI file will be converted to
  their ANSI character equivalents. This in conjunction with using the
  default trim characters list eliminates an infinite loop bug where
  servers connect/disconnect rapidly without downloading anything due to
  some invalid characters in the filename not being removed.
- Added warning message when switching to the Advanced tab.
- Modified connection class to reset cached IP address whenever the host
  name is changed so user does not have to restart for the new host to
  take effect.
- Added code to adjust the queue's total size when adjusting the size of
  individual queued articles.
- Encapsulated code for accessing the Expired.bnr file into a class
  structure keeping the file open during the entire session, instead of
  constantly opening and closing it and gave it a 16 kB buffer for both
  reading and writing for better performance.
- Changed accelerator key for Shutdown Computer When Finished command from
  <S> to <H> to eliminate conflict with Servers Columns command.
- Added <Alt>-<C> (from the Queue tab) to restore the default mouse cursor
  when it gets stuck in hourglass mode.
- Fixed timing on auto close/shutdown routines.
- Added Default buttons to invalid/trim character list fields to restore
  the default list of characters to those fields.
- [Windows] Added additional characters to default invalid character list
  for older versions of Windows.
- Advanced option to only allow 1 period in filenames and none in
  directory names [may be needed in some older versions of Windows]
- Added scroll wheel support to Newsgroups, Queue and Message List pages.
- [Linux] Improved scaling of Options dialog for varying screen
  resolutions.
- Added new "Do not hide unavailable submenus" option to Options | 
  Appearance | Caption & Statusbar page to prevent automatic hiding of 
  disabled submenus on the main menu.
- Modification to row marking code to prevent adding duplicate articles to
  the queue in certain situations such as when selection contains a
  partially downloaded multipart article set.

Changes in BNR2 Beta 0.11.3
- Fixed Server-Group load/release bugs in NewsRC export and import
  functions.
- Hacked popup hints to display | (pipe) characters instead of using them
  as special character and truncating the hint at the first occurance.
- Added -scan command-line option to force a scan for expired articles on
  this startup.
- Optimized NewsRC import for significantly faster check for new groups
  and additional minor optimization when not adding new groups to master
  newsgroups list.
- Fixed a couple typos.
- DataStore field now adds missing trailing path delimiter.
- LINUX: Fixed scroll to last row redraw bug.
- LINUX: Popup hints now update text when moving mouse from one cell to
  another in the grids.

Changes in BNR2 Beta 0.11.2
- Modifications to free space check to work better and throw exception
  when fails to get free space value.
- Added option to Options | Advanced tab for turning off free space check
  in case of additional problems.
- Moved location of queue saving function so that items downloading at
  moment of shutdown have a longer change to finish up, so they don't
  remain in the queue and end up getting redownloaded.
- Disabled phantom refreshing of groups after deleting header refresh
  items from the queue.
- Modification to Download Scheduler to eliminate one potential cause of
  connections swapping back and forth between groups without ever
  downloading any articles.
- Changed default NewsRC path to DataStore directory instead of BNR2
  executable directory.
- Added *.newsrc filter to the default "NewsRC files" file type and
  altered the default filename under Windows to <host>.newsrc instead of
  newsrc-<host>.
- Added requirement that BNR2 must be idle to perform a NewsRC import or
  export and auto-pause queue until finished to prevent database from
  being modified by connection threads during the process of exporting/
  importing the file.
- Modification to queue.xml saving function that should fix failure to
  save article items problem some users were experiencing.
- Added new Advanced option to alter list of invalid characters that will
  be replaced with underscore characters in filenames and directory names.
  Stored under InvalidCharList in BNR2.ini.
- Added new Advanced option to alter list of characters to trim from the
  beginning or end of filenames and directory names.  Stored under
  TrimCharList in BNR2.ini.
- Added the {} and space characters to the default invalid character list
  in the Linux version.

Changes in BNR2 Beta 0.11.1
- The new Server/Group column order feature wasn't quite working, only
  moved the title, now moves whole column.
- Enabled Default popup menu item on Column Configuration dialog.
- Fixed broken code for updating Message-List columns when exiting the
  Column Configuration dialog.
- The new Queue saving code was skipping header refresh entries on restart
  due to mixture of final field name with earlier draft names.
- LINUX: Fixed typo in script.

Changes in BNR2 Beta 0.11.0
- Added check for null result in call to FindGroupByName function from
  SendHeaderCmnd function.
- Fixed OnKeyUp handlers for Groups & Servers Pages to disregard all keys
  while renaming a node.
- Fixed broken UnSubscribe command on Newsgroups page due to the Groups
  page Remove action being disabled when the Groups page is not the
  current page.
- Added trimming of Host string value when saving changes to Server
  Properties and when loading server from INI file.
- Added code to dump queue items into queue.xml file on shutdown and
  rebuild the queue from this file, if present, instead of much slower
  scan of the entire database.
- Added code to build a list of article offsets in Expired.bnr whenever
  the reference count for an article reaches zero, and modified the scan
  for expired articles to only scan a subset of the database from this
  list instead of scanning the entire database for somewhat faster
  startup.
- Added an exception handler to the BTree FindKey function to prevent some
  crashes on startup due to a corrupted database.
- Modified Article class to force lazy writing of article records modified
  by internal error recovery code and also in string and flag changing
  code.
- Added routine to check for enough free space before attempting to
  download articles.  Uses combined size of all marked segments in each
  multipart article set. [Still need to consider sizes of articles with
  the same target drive that are actually downloading from other
  connections at that time.]
- New Reserve Disk Space setting to Options | General tab allows
  specifying the amount of excess disk space to leave on all target drives
  to prevent filling up the entire drive.  [Give it at least 512 kB per
  connection, or it may still fill up the drive and loose articles due to
  articles already downloading when the limit is reached.]
- Some minor text formatting adjustments.
- Added ability to choose columns for Servers and Groups pages and also
  modify the order, width and alignment of the columns.  These settings
  are saved in the BNR2.ini file under ServersColumns and GroupsColumns.
- Modified header queueing code so that it won't forget the group it was
  working on whenever a server times out during a header refresh.
- Queue now pauses during startup scans to prevent connections from
  starting too early.
- Added ability to choose which columns to show and the column order on
  the Servers and Groups pages.
- Now clears group article count/refresh info whenever an auto-expire
  occurs. 
- Modified download scheduler to consider actual article dates when
  comparing across different groups for more accurate downloading by
  expiration order.
- Added support for exporting/importing .NewsRC files.
- Put deletion of Server-Group files on group/server reset inside a 
  try/finally block to ensure the file is still deleted in the event an
  exception error occurs trying to expire the articles from that file.
- Added new default style setting to Options | Appearance | Caption &
  Statusbar page for altering the look of the program a bit.  This setting
  is stored in the BNR2.ini file under DefaultStyle.
- Modified group refresh code to not enter a new header refresh item for
  groups that are already in the process of refreshing headers, not just
  when a GROUP command for that group is in the queue.
- Modified connection thread code to abort pending auto-connections stuck
  in a retry loop when there is no longer anything in the queue for them
  to do.
- <Shift> Clicking on the Group Open command while a group folder is
  selected now opens all groups in that folder in separate Message List
  Pages instead of as a single meta group. [Only works with the Open
  button on the toolbar in the Linux version.]
- Added clipping of First Part Score boost to prevent wrap around.
- Linux: Now saves view filters created inside the program.
- Linux: Now displays information in main form title bar and on the task
  bar.
- Linux: Now shows BNR2 icon on taskbar.

Changes in BNR2 Beta 0.10.4
- Fix infinite loop bug when marking selection for download contains
  multipart article set with some already downloaded parts.
- Added adjustments to Marked Article counters switching the newsgroup for
  a queued item from the one on which it was originally queued to another
  newsgroup to which the article was crossposted.
- Added check to abort PartCheck.CheckItem function in the event that the
  offset passed to that function is null to prevent some "Attempted to
  write an uninitialized article!" errors.

Changes in BNR2 Beta 0.10.3
- Modified connection threads to clear active group field upon connection
  to prevent the queue from trying to download an article without first
  switching to the proper group after a timeout.
- Modified code for marking articles for download to eliminate an
  unnecessary duplicate database access.
- Fixed a possible deadlocking problem when marking articles for download.
- Included server node expanded flag in list of flags not copied from
  parent node to prevent loss of expanded/collapsed state of servers/
  folders on restart.
- Added flag for remembering group node expanded/collapsed state after
  restart.
- Implemented downloading articles by Message-ID.

Changes in BNR2 Beta 0.10.2
- Fixed bug from 0.10.0 & 0.10.1 where the start minimized to system tray
  option failed to hide the main form.
- Fixed bug preventing DBScanDate from being updated after each DB scan,
  which in turn caused the DB scan to reoccur on every launch instead of
  once per number of days specified in the Deletex Expired Article every
  ___ days setting.
- Made change to TArticle class to break potential infinite loop problems
  when encountering bad previous/next article part offsets in code that
  needs to access all parts in multipart article sets.
- Modified error report on attempt to read invalid article offset to give
  a stack trace and the offset that was attempted.
- Doubled maximum part size difference in PartCheck to reduce chances of
  some parts of a multipart article sets from being excluded due to
  variances in the sizes of the parts.
- Finished implementing new Group | Reset command on the main menu to wipe
  out all articles on the selected group/folder so that the next refresh
  will redownload all available articles.

Changes in BNR2 Beta 0.10.1
- Fixed Access Violation and program crash from attempts to access null
  pointer when restoring main form after minimizing to the Taskbar while
  on the Newsgroups page.
- Added some Application.ProcessMessages calls to database scanning
  functions during startup so that the Splash screen will now redraw
  itself when the user returns to BNR2 after switching to another program.
- Removed displaying of remaining input row in Missing Number error and
  warning messages in XOVER parser.
- Fixed two cases where an bogus Invalid Next Free Slot error would be
  issued when Next = Pos + Size.
- More modifications to subject line mask update function to keep the
  subject line from changing when article is downloaded due to
  misidentified mask fields.

Changes in BNR2 Beta 0.10.0
- Added Article-ID numbers to 10 digits in function used by Queue Article 
  IDs column and elsewhere so that sorting by this column will sort the
  articles properly.
- Fixed an always true condition preventing checking of csv files when the
  text filename is > the last cached filename.
- Removed display of Last Open, Last Refresh, Ready and Next Refresh
  values for newsgroup folders.
- Changed Mark on Score change behavior to trigger when at least one of
  the selected items is not already marked for download instead of only
  when none of the items are already marked for download.
- Added inline spinedit for the Message-List & Queue page score columns
  when selecting a single row and then clicking the score cell for that
  row.
- Added S keyboard shortcut for triggering the score inline spinedit for
  all currently selected rows on the Message-List & Queue pages.
- Combined "Score+" & "Score-" popup menu commands into a single "Score"
  command on both the Message-List & Queue pages, which triggers the
  inline score spinedit for all selected rows.  [The + and - keyboard
  shortcuts for adjusting the scores still work too]
- Hack to fix bug where trying to <Shift><Click> to select a range of
  rows immediately after opening a page without first clicking on a row
  caused only last column to be selected.
- Modified pre-popup code to change selection to the row currently under
  the cursor when not part of the existing selection (standard behavior)
  rather than only when a single row is currently selected.
- Added ability to rearrange Message-List columns inside BNR2 itself by
  dragging the header cell to another position (only works for the same
  columns that can be arranged using the Columns field in the INI file,
  not for the Server columns.
- Fixed all dialog boxes to return focus to the correct window upon
  closing.
- Implemented ability to rearrange the Queue column order based on the
  value of the QueueColumns field in the INI file.
- Added <P> and missing <Alt><P> keyboard shortcut handler for Pausing/
  Unpausing the queue.
- Changed keyboard shortcut for Targeting servers to <R> and <Alt><R> to
  not conflict with Tools menu.
- Modified XOVER parsing code to return unsigned integers instead of
  signed integers for Article-ID's, using 0 instead of -1 for invalid.
- Added mention of Article-ID to all XOVER parsing errors to help match up
  with raw data when -dump command-line parameter is used.
- Added test for numeric character at start of Article-ID, Size & Lines
  field parsing.  Tried to keep articles with missing Size or Lines
  values. [Previously detected as missing tab errors]
- Created Server/Group/Queue menus to main menu.  Some select commands can
  be used from other pages.
- Modified decoder to be able to detect non-standard case in attachment
  headers.
- Modified decoder to always update subject mask for incorrectly guessed
  size value instead of only fixing when filename also wrong.
- Modified decoder to do redraw visible rows in Message-List page when
  size has been modified or when it has finished downloading all parts.
- Added dialog box for choosing which columns to display on Queue &
  Message List pages.  Also, allows changing the order of columns.
- Added ability to optionally specific the name and path to use with the
  -dump command-line parameter and changed default filename from
  errlog.log to dump.log.
- Modified INI writing code to preserve previous Max Headers & Bandwidth
  values even when those features are turned off.
- Changed initial position of About Box, Group Properties, Server
  Properties & Options forms to center of main form instead of screen
  center.
- Modified many format strings to output unsigned integers where
  appropriate (Article-ID's, file offsets).
- Increase buffer size for reading CSV files in FileCheck to 8192 bytes
  for 27% improvement in performance.

Changes in BNR2 Beta 0.9.6
- Fixed the "Cannot focus a disabled or invisible window" exception when
  using Enter key to select choice for Mark All as Read Query Window while
  closing a Message List page.
- Added automatic updating of quick filter when selecting an entry in the
  history box.
- Fixed view filter updating function to stop it from scrolling the entire
  grid up when marking selected articles as read/unread causes them to no
  longer be visible.
- Fixed view filter updating function to scroll up when hiding articles
  near the bottom of the list so that it does not leave unused space at
  the bottom of the grid.
- Fixed "Auto expire articles not refreshed in -1 days" option to never
  expire articles instead of always expiring articles.
- Added option to Options|Appearance|Colors & Fonts to hide the gridlines
  on the Message List pages.
- Added Select All command to Queue context menu.
- Added Delete key shortcut for removing items from Servers and Groups
  pages.
- Added option to Options|Appearance|Caption & Statusbar to toggle all
  toolbars between 3D style (default) and flat style.
- Fixed bug in download stats reset date computations for monthly reset
  that failed to reset month for next reset to January at the end of the
  year, causing the reset period to become once per year in December.
- Fixed bug in Download Scheduler causing wrong articles to be downloaded
  when targetting a specific server.
- Updated About Box.

Changes in BNR2 Beta 0.9.5
- Fixed typo in retry message.
- Made a change to database code that should use less memory when deleting
  keys.
- Fixed types in many functions in article list code to ensure proper 
  handling of articles with extremely large Article ID's.
- Modified article score adjustment functions to prevent rollover at upper
  and lower limits.
- Modified Group Properties form to allow full range of default header
  refresh score values.
- Made optimization to Queue OnKeyUp handler to not refresh the grid when
  unassigned key received and to only refresh the selected score cells
  when adjusting score values to eliminate flickering of the grid when
  using keyboard commands.
- Made optimization to Article List OnKeyUp handler to only refresh the
  effected cells/rows score/mark/unmark commands to reduce flickering when
  using keyboard commands.
- Added missing line to delete old DirLst.log file when using the -debug
  command-line option.
- Modified startup code so that -debug command-line option forces a DB
  scan to occur (otherwise -debug would do nothing when a DB scan is not
  needed) and overrides the -quick command-line option, which otherwise
  would prevent a DB scan even when it is needed.
- Fixed bug in buffer logging causing garbage to be displayed instead of
  keys.
- Disabled Host & Port fields for server folders on Server Properties
  window.
- Changed base sequential number for renaming duplicate filenames to 2.
- Added code to attempt to save newly downloaded part to a separate new
  partial file when unable to open existing partial file instead of
  throwing it away.
- Fixed bug in TArtList.ExpireArticle function that was changing the
  current article without acquiring the article lock.
- Modified filename/path fixup function to remove multiple path delimiters
  in a row except at the beginning of UNC paths.
- Added code to restore the BNR2 icon in the event that Windows Explorer
  crashes while BNR2 is minimized to the system tray.  [May not work on
  Win95 or NT4 without the Windows Desktop Update] 
- Modified quick filter boxes on Newsgroups and Message List pages to make
  automatic updating of the filter an option.  Now, the default is to wait
  until user presses enter after editing the value.
- Modified quick filter boxes to use the Escape key for aborting changes
  to the value.
- Added option for including subject line as the comment when logging
  downloaded flags to BNR.csv.
- Added -pause command-line option for starting up BNR2 with the queue
  paused.

Changes in BNR2 Beta 0.9.4
- Removed hotkey assignment on Kill/Want filter edit window Cancel button
  to allow Ctrl-C to perform standard copy text to clipboard operation.
- Changed a few other menu item entries to be more standardized.
- Fixed some possible integer overflow problems in FileCheck & Map code.
- Fixed some possible range check problems in FileCheck code.
- Added bounds checking to parsing of part and file numbers in subject
  lines.  Upper limit of 65535 parts per article & 65535 files per set.
- Optimization of CSV line parsing function (twice as fast as previous
  version, but still only a quarter of the speed of the original
  specialized version).
- Converted many signed 32-bit integers to unsigned 32-bit integers to
  support twice as many items and modified code manipulating those numbers
  to handle the unsigned integers.
- Optimized reverse sort function to simply flip the array of visible rows
  instead of doing full resorting of the rows. VERY fast.
- Fixed bug in Connection Manager that would not consider connecting any
  equal or lower priority connections below a connection with a red error.
- Fixed bug in Connection Manager that would disconnect and immediately
  reconnect to last connection to a server whenever the server using the
  maximum allowable number of connections for both that server and for the
  parent folder.
- Fixed some range check problems in Presort function that could cause
  group to open improperly.
- Added a missing check for invalid offset value in Presort function that
  could cause read attempt from invalid position errors add garbage rows
  in Message List.
- Minor optimization to Presort function.
- Added 10,000 line limit to Errors Tab to prevent infinite errors from
  consuming too much memory and crashing the program.
- Modified download logging function to retry 3 times before giving up on
  exception errors attempting to log a downloaded file and added logging
  of the exception error received instead of just silently skipping the 
  entry (not supposed to happen at all).

Changes in BNR2 Beta 0.9.3
- Fixed potential buffer overflow vulnerability in FileCheck code from
  combined length of path and CSV file strings exceeding 512 bytes.
- Fixed bug in Connection Manager that would sometimes allow closing
  connections to abort their pending disconnection and continue to
  downloading files.
- Fixed bug in Connection Manager that could sometimes consider paused
  connections for the best waiting connection.
- Fixed ForceExist & ForceNonExist button to automatically update their
  enabled/disabled states when used.
- Reversed score comparison function so that sorting Queue by Score column
  shows higher scored items at the top.
- Fixed bug in on-the-fly FileCheck to prevent attempting to read from
  null directory values read from CSV files.
- Updated About page to show new address of the BNR2 web site.
- Fixed Range Check error in AdjustServerFile method.
- Improved Connection Manager's ability to close excessive auto-initiated
  connections when user-initiated connections exceed folder limits.
- Modified Message List closing code to clear new counts on all groups
  within a group folder when marking all as read on close.
- Modified Message List closing code to not bother asking about marking
  all as read when there are no unread messages to mark as read.
- Reverted Message List view Servers list from TThreadList back to TList
  to avoid Access Violation and crash when program receives a "No Such
  Article In Group" error attempting to download an article that has
  expired since the last refresh.
- Modified filtering by RegEx to consider matching to any of the selected
  header fields instead of requiring matching to all of the selected
  header fields.
- Restored missing icons on tabs for Message List, Text Viewer, and JPEG
  Viewer pages.

Changes in BNR2 Beta 0.9.2
- Fixed another possible integer overflow condition in FileCheck size
  comparison functions.
- Modified FileCheck path/filename comparison functions to use case-
  insensitive comparison when scanning CSV files in Windows.
- Modified FileCheck path/filename comparison functions to use case-
  sensitive comparisons when compiled for Linux.
- Fixed code for deleting server-group files to not delete server 
  GrpLst.bnr file by mistake.
- Rearranged program initalization and shutdown code to shutdown the
  WinSock class before shutting down the configuration and INI classes
  to prevent getting exception errors from attempts to write the server 
  disconnect messages to server log files on shutdown when some
  connections were still open and logging of server activity is turned on
  for those servers. 
- Changed File|Exit hotkey from 'E' to the standard 'x'.
- Fixed bug in Server Connect function preventing all unconnected servers
  in a server folder from attempting to connect.

Changes in BNR2 Beta 0.9.1
- Modified INI code to restore preference value from old preference flags
  if no Preference field present.
- Modified INI code to store server download limits in kB instead of bytes
  to allow for higher periodic limits up to 2 TB.
- Fixed several formatted string errors in Options window related to the
  Memory page.
- Fixed formatted string error in Options window related to Kill/Want
  filter with expiration date.
- Fixed error in recalculation of total cache size in Options window under
  the Memory page when manually adjusting values.
- Fixed broken RegEx Flags in View Filters.
- Fixed broken "Activate by default when opening a newsgroup" option in 
  View Filters.
- Added code to reset new counts to 0 for all groups when resetting the
  database.
- Fixed restoration of normal cursor after removing group/server.
- Added code to delete server GrpLst.bnr files when master GrpLst.bnr file
  is missing.
- Added code to also delete server-group files when main database is
  reset.
- Removed defunct Show Hint debugging command.
- Modified Server CopyFromParent function to copy the server's preference
  value.
- Yet another attempt to fix the non-zero new count bug after closing
  group and marking all as read.
- Eliminated integer overflow conditions from comparison functions used in
  new accurate sort functions.
- Eliminated integer overflow conditions from FileCheck size comparison
  functions.
- Eliminated integer overflow condition from article reference count code.
- Fixed bug causing changes to server name in Server Properties window to
  not update the name displayed on the Server grid when the "Use settings
  from parent level" option was set.
- Modified code for saving view filters into BNR2.ini file to write the
  Name field even when still at default value to get around problem with
  Delphi INI routines failing to write the section heading line without at
  least one field appearing under that section.
- Fixed bug in Download Manager preventing servers with download limits
  from downloading anything.
- Fixed bug in Download Manager that caused servers to continue to show
  previous status instead of Ready when it has reached its download limit.
- Fixed possible exception error on shutdown due to attempt to write to a 
  server log file after the configuration class containing the path to the
  server log file has been freed.

Changes in BNR2 Beta 0.9.0
- Replaced old server connect/disconnect code with new smarter connection
  manager that observes folder connection limits and chooses servers to
  connect to based on both preference and availability of appropriate
  items in the queue.
- Expanded server preference values from range of 3 values to 256 values:
  -128..-1 (Low), 0 (Normal), 1..127 (High).  Preserves old preference
  flags for backward compatibility.
- Moved "Has detected filename" View Filter option to new FileCheck page
  and added CSV/Disk match filtering options to this page.
- Added server daily/monthly download limits.
- Fixed buffer overrun vulnerabilities in code for updating the Subject,
  Author, Filename and Download Directory fields.
- Fixed buffer overrun vulnerability in updating of popup hint for Windows
  system tray icon.  [Fixes the serious host of problems appearing in the
  last few versions.]
- Added several additional time zones to article date parser.
- Using the Shutdown BNR/Computer When Idle options now close program with
  exit code 64 & 65, respectively.
- Replaced several object lists with thread-safe versions in: KillWant,
  JPEGView, TXTView, ArtListView units.
- Fixed handling of GROUP command to not allow article counts to drop to
  0, so dormant groups are not considered non-existing.
- Fixed new article count routines to remember value between sessions even
  when the group has not been opened.
- Fixed bug causing authorization fields to be lost on reload from INI
  file when server is using Parent Settings.
- Added hourglass cursor when sorting Message Lists.
- Added hourglass cursor when removing groups/servers.
- Added exception handling around functions for reading Subject, Filename,
  Download Directory strings from tables to prevent repeat exceptions.
- Renamed Server/Group "Configure" command to "Properties".
- Changed bytes symbol from "b" to "B"
- Extended server disconnect on idle and disconnect on no response limits
  to 999 seconds.
- Fixed logging to BNR2.csv file to enclose filenames and directories that
  contain commas in quotes (previously filenames with commas were not
  logged at all).
- Rewrote CSV parsing function to support quotation marks and internal
  commas.  Also, made more robust to not use invalid characters when
  converting size field from text to integer.
- Downloaded updated version of TMultireadExclusiveWriteSynchronizer class
  from Borland Developer Network website (fixes possible deadlock issue)
- Fixed bug in auto-abort of pending shutdown after unpausing queue.
- Added code to detect and repair circular references in multipart
  articles to prevent infinite loops.
- Added code to repair missing next part pointers in multipart articles
  when blank to recover from rare problem where article appears to be
  complete on the Message List pages, but refuses to even queue some
  parts.

Changes in BNR2 Beta 0.8.5
- Fixed serious bug in GroupList causing Access Violations and lockups.

Changes in BNR2 Beta 0.8.4
- Replaced spinlocks in FileCheck, GroupList, KillWant & Server classes.
- Fixed Filter-By-Server feature to work with newsgroup folders.
- Optimized for faster filtering by server.
- Fixed Articles Menu to allow showing Servers sub-menu immediately after
  a Message List is opened.
- Added code to append the name of the currently selected Message List,
  JPEG Viewer or Text Viewer tab to the title bar.

Changes in BNR2 Beta 0.8.3
- Added ability to filter Message List pages to show only articles that
  are available on specific servers.
- Added ability to pause individual servers.
- Improved server loading function to try to convert invalid parent
  indices to new method instead of erroneously attaching as child of
  another server and omitting from the new INI file.
- Implemented option to shutdown BNR2/computer when not busy.  If any
  Message List pages are open and BNR is configured to ask about marking
  all files as read, then it will assume the user wants to answer no to
  this query, instead of holding up the shutdown waiting for a response.
- Converted Article, Server Group & part of Buffer classes to use blocking
  locks instead of spinlocks. [Faster header download rates and less CPU
  usage?]
- Made server authorization fields available only for actual servers as
  they have no meaning for folders.
- Added filename & part number to yDecode error messages.
- Fixed code for interpreting server stat reset times to prevent time
  entered from sometimes being changed to previous second.
- Expanded dropdown lists for time of day for server stat reset times to
  include all hours of the day.
- Started converting strings in BNR to string resources to support
  possible future multi-lingual support.

Changes in BNR2 Beta 0.8.2e (Build 393)
- Increased max. auto-expire & delete expired articles limits to 999 and
  added -1 for never.
- Fixed INI read/write functions to always load/save the server
  authorization fields.
- Added temporary -test1 command-line switch for using new more accurate
  sorting function.
- Added temporary -test2 command-line switch for using old (100% CPU
  usage) sleep delay while waiting for a lock, instead of new (0% CPU
  usage) delay
- Converted all remaining lock functions to use the new sleep delay,
  except for when the above switch is used to override the new value.
- Fixed several CLX memory leaks on program termination found online.
- Added code to server loading code to attempt to convert old indices to
  new indices before resorting to appending the item to the root folder.
- Added advanced option to disable delayed disconnect.

Changes in BNR2 Beta 0.8.2d (Build 392)
- Fixed bug in popup for disconnecting connections on exit appearing when
  connections are active but not busy.
- Fixed bug preventing red Error connections from changing to User
  Disconnect status when user chooses the Disconnect command.
- Removed authorization fields from group of server settings that get
  copied from parent level when the that option is used.
- Added code to recurse through child nodes propogating parent settings to
  any child nodes that have Use Settings From Parent Level set.
- Extended -ini command-line switch to allow specifying a filename without
  requiring a path name.
- Fixed CLX linked list bug causing scrambling of Server/Group items in
  certain situations.
- Fixed limitation in Server/Group item lookup code causing items from
  multiple folders with the same name to all be moved to first instance
  after shutdown.
- Modified directory browsing dialog to default to My Computer instead of
  the Desktop for invalid default directories.

Changes in BNR2 Beta 0.8.2c (Build 391)
- Fixed a bug in delayed disconnect feature causing user-disconnected
  servers to continue trying to connect and preventing server from
  changing their icon to show as user-disconnected.
- Added popup allowing user to force disconnection of busy connections
  that are currently waiting to disconnect.
- Added popup allowing user to choose whether or not to wait for busy 
  connections to finish downloading their current items before shutting
  down.

Changes in BNR2 Beta 0.8.2b (Build 390)
- Fixed a bug in server index values stored in INI file to prevent
  scrambling of server items.

Changes in BNR2 Beta 0.8.2a (Build 389)
- Fixed bug causing Access Violations when using Exit button from System
  Tray menu.
- Added code to auto update System Tray tooltip.
- Adjusted Options form default position to center of Desktop.
- Changed web site address on About Box and added credit to myself.
- Added Pause & Options commands to System Tray Popup Menu.
- Added ability to click on System Tray icon to restore BNR.
- Added name of group to the unsubscribe failure due to group currently
  being open message.
- Added name of group folder to delete confirmation message.
- Fixed handling of Cancel button when removing multiple groups/folders to
  abort attempt to remove remaining items in selection.
- Fixed master newsgroups view filter button toggling bug allowing both 
  buttons to be toggled on/off at same time.
- Fixed bug causing main form's last normal position and size info to be
  replaced with maximized position and size on shutdown.
- Added an entry on Options | General for option to start with BNR
  minimized to Windows System Tray & put both of the Windows-only options
  into a new group labelled "Platform-specific settings".
- Fixed popup menu code to adjust position of popup menus to prevent them
  from extending beyond the bottom of the screen.
- Fixed Text Viewer to automatically close page after deleting last text
  file.
- Removed display of Today download amounts under individual connections.
- Added check for missing tab after article number when downloading XOVER
  data.
- Made loading of servers and groups from BNR2.ini more robust to handle
  potential reordering of items due to new requirement that folders appear
  in alphabetical order at the top of the list.
- Fixed CLX bug that failed to link tree nodes properly that could cause
  items on the Servers and Groups pages to be get scrambled.
- Current download rate indicator should be more accurate.
- Added a few miscellaneous CLX bug fixes found online.
- Fixed a multi-part article expiration bug that could cause expiration of
  a part to split the article stack into 2 incomplete stacks.
- Optimized expiration fo multi-part article parts to use fewer database
  accesses.
- Added command-line option: "-ini <path>[<filename>]" to specify an
  alternate main INI file instead of BNR2.ini in the main program
  directory.
- Added command-line option: "-dump" to force BNR2 to dump the data stream
  retrieved from XHDR & XOVER commands to help diagnose any parser
  problems.
- Removed inefficient copying of data stream inside inner loop of XOVER
  parser, replaced by -dump command-line option.
- Added DataStore field to BNR2.ini file to set directory to use for
  storing database files.  The default value is the same directory as the
  BNR2.ini file itself.
- Implemented the "Use settings from parent level" option for Servers.
- Modified FileCheck existing files table to support larger file sizes.
- Fixed bug preventing items from being downloaded when they were
  targetted for one server but were also available on another higher
  priority server.
- Modified download scheduler to first download all targetted items from a
  given server before downloading non-targetted items to prevent slow
  servers from wasting time downloading non-targetted items that are also
  available on faster servers while they still have targetted items
  remaining in the queue.
- Modified refresh time string function to report "err!" for invalid
  values and "now" for values less than 2 seconds from current time.
- Made a change to the sleep delay in database locking routines that
  should reduce CPU usage while waiting for a lock from 100% to 0%.
- Modified code for waking servers upon unpausing to only wake those
  servers that actually have items waiting in the queue.
- Modified directory selection dialog windos to default to currently
  selected directory, if it is a valid existing directory, instead of
  defaulting to the Desktop.
- Modified code for removing excess server connections after changing the
  max. number of connection to favor connections that are idle or have an
  error over those that are busy downloading.
- Creating a new Want filter from a Message List page now sets the default
  download directory to the assigned directory for the first article in
  the selection, or the default for the group, if the first tiem does not
  have an assigned directory, instead of starting out blank.
- Modified server disconnection code to delay disconnecting until the
  current item completes.  While waiting to disconnect, the connection
  will flash. Selecting the connection and pressing the Connect button
  before the connection has disconnected, will cancel the pending
  disconnect.  This also affect closing down the connections upon program
  termination, so it may take a very long time for BNR2 to shutdown
  because it must wait for the connections to finish.
- Disabled the Remove button for servers that have any active connections.
- Fixed bug in download scheduler causing same-score download by queued
  order to ignore score values and only download from the first server
  that has the article leaving other servers with the same priority
  sitting idle.
- Changed auto header refresh every day setting to every 24 hours.
- Fixed refresh time bug that caused auto-refresh to refresh all groups at
  midnight and when BNR was launched.
- Added some error checking to parsing of XHDR blocks and modified error
  messages to report the type of header block that was being processed
  when the error occurred.
- Fixed server and group removal functions to remove the relevant 
  Server-Group entries from memory.

Changes in BNR2 Beta 0.8.1
- Added ability to minimize to System Tray (Windows only)
- Fixed file delete command to remove non-existing files from Existing
  files list (for real this time)
- Fixed broken Pause command on Queue popup menu.
- Converted Config Page to separate Options Window.
- Altered page component to change pages immediately when mouse button is
  pressed instead of waiting until mouse button is released.
- Fix bug causing OK buttons to be greyed out when editing properties of a
  server folder.
- Server Configuration disabled "Use settings from parent level" checkbox
  pending implementation of this feature.
- Server Page New Folder command now triggers Server Folder Configuration
  Window just like New Server command and removes the new folder if user
  cancels.
- Server Page New Server command no longer gives Invalid Host exception
  when removing a cancelled new server entry that has no host value.
- New Server and New Folder both revert to old selection after cancel.
- Groups Page New Folder command automatically enters edit mode so user
  can enter name for the new folder.
- Added code to automatically adjust INI file settings from previous
  versions of BNR2 to be best match with v8.x updates (default to Mark on
  Score & View Filter Regex default to test both Subject and Author
  fields).

Changes in BNR2 Beta 0.8.0
- New Lead Programmer: Jeff Snavely.
- Configuration / General added option to toggle whether or not to
  automatically mark articles for download on score change.
- Queue automatically cleans up list when user changes to Queue page.
- Queue allows manually deleting finished items from queue.
- Server / New Server cancel button removes the blank new server entry.
- Server / New Server OK button only enabled when Host & Port both not
  blank.
- Server properties on all tabs except Configuration enbable/disabled
  based on status of Use parent settings option.
- New article counts for groups are now stored in INI file instead of
  resetting to 0.
  NOTE: Still need to implement code to adjust the counts based on
        articles that expire.  Values should automatically correct
        themselves when group is opened and then closed.
- Message List now inserts correct max part values for multi-part articles
  with 256+ parts.
- Added/improved code to disable various buttons and popup menu commands
  throughout BNR when not that command is not available for the current
  selection.
- Assigned default current page on the various page controls to ensure
  proper page is displayed first.
- Downloaded files now fix the subject line masks when true filename does
  not match guessed filename to prevent corruption of the subject line
  after the new filename is stored.
- Decoder changed unique filename routine to use more common (#) suffix to
  filename instead of unusual _# suffix.
- Queue page added a popup menu.
- FilterCfg / Sizes tab added Show/Hide articles with filenames option.
- Message List pages added server-specific existing/missing parts lists to
  the popup hint.
- Queue & Message List pages fixed bug causing sort order to change when
  mouse is over a column heading upon releasing mouse button after
  selecting rows.
- Statusbar fixed to hide part counts panel when a Message List page is
  not currently being displayed.
- Newsgroups page minimized the selection resets to only when the user
  changes the filter to be less annoying to users trying to subscribe to
  several related groups at once.
- Newsgroups page enhanced behavior of double-clicking an item to either
  subscribe or unsubscribe the selected item based on its current state.
- Groups page added informative message box for failure to remove a group
  due to it currently being open instead of just silently failing.
- Added Advanced options page to configuration page control with new
  option to ignore 411 (No Such Group) errors to prevent a group from
  being removed automatically when this error occurs.
- Groups page modified behavior of double clicking a row to only open leaf
  nodes.  Folder nodes now only toggle the expanded/collapsed status as
  they should.  In order to open a folder, the user must use the Open
  button or the Open command on the popup menu.
- Decoder fixed code to add .nws/.txt extensions only when not already
  there (case insensitive) to prevent bug causing multiple copies of the
  extension when several text articles have the same subject line, and
  hence the same guessed filename.  Duplicate occurances of the same
  subject line should now use the same duplicate name resolution as binary
  files.
- Message List page added code to file deletion command to to send the
  deleted files to the Recycle Bin in the Windows version of BNR when the
  Send deleted files to Recycle Bin option is selected in Configuration /
  General.
- View Filters extended regular expression matching to allow user to
  choose what column(s) (Subject, Filename, and/or Author) to apply the
  regular expression for more flexibility.
- Message List page fixed file deletion function to remove entry from the
  existing files cache in the event that the file has already been deleted
  from the HD outside of BNR and to skip removing from the existing file
  cache if BNR could not remove the file for some reason such as being
  locked by another program.

Changes in BNR2 Beta 0.7.3
- Added (finally) the article list color and font style setup (Config /
  Appearance / Fonts & Colors).
- Added option to limit the info shown on the statusbar for servers
  (useful if you command BNR2 via a VNC connection, for example).
- Fixed Want filter download directory handling.
- If a file already exists in the decoding directory, it will not be
  automatically marked for download any more.
- Added an experimental "Append part of article subject to decoding
  directory" setting to Group Config / Decoding. This will append the
  beginning of the subject to the decoding directory of each of the
  articles. This setting still needs some tuning, though.
- Some other minor bugfixes.

Changes in BNR2 Beta 0.7.2
- Reduced system resource consumption (on Win9X/ME systems).
- Still more improvements to the MIME article decoding.
- When you turn Pause off for the queue, all Connect-On-Demand servers are
  now properly reconnected.

Changes in BNR2 Beta 0.7.1
- Fixed the "Execute" problem caused by my reusing shortcut key "E" for
  Refresh. Now "F" or "F5" does the refresh.
- Added a "Pause" button on the Queue page, to pause the downloads (after
  the currently downloading article/header data has been received).
- A small change in the header download routine, now BNR2 should not
  request all MessageID/XOVER headers unnecessarily.
- Multi-part MIME-encoded article download improved.

Changes in BNR2 Beta 0.7.0
- New configuration settings on the Config / General page. You can now
  have BNR2 mark the article as read automatically after download. Also,
  you can configure how BNR2 should show multi-part articles that were 
  incomplete when you last marked the thread as read, and have since 
  become complete (with parts that are new).
- You can now decide whether you want BNR2 to show statistics for bodies,
  headers, or both on the Server treeview. See the Server Configuration /
  Statistics page.
- New PartCheck system, now the multipart article threads are combined
  while downloading headers (instead of while opening a newsgroup as in
  prior versions). This makes it possible to auto-mark for download (using
  Want filters) also multi-part articles. Drawbacks of this new system are
  a slower header download and an increased memory consumption.
- Want filters have the ability to select a download directory for all the
  articles matching this want filter.
- Kill / Want Filters now have a working Expire feature.
- You can now refresh an open ArticleList with a new Refresh button on the
  toolbar. The button animates if there are new articles (headers received
  since the last refresh/open of this article list) in the database.
- Right-clicking (to bring up the right-click menu) in the Article List
  now selects the current row under mouse cursor, unless you have selected
  several rows prior to right-clicking.
- There is a new item "Save as Text (*.nws)" on the Article List
  right-click menu. This toggles the "save as text" mode on/off for the
  selected article(s). In this mode BNR2 does not attempt to decode the
  article, instead it saves it as a text *.nws file.

Changes in BNR2 Beta 0.6.5
- BNR2 now allows up to 100 simulatenous connections to servers that
  require a login. Other servers are still limited to 4 simultaneous
  connections maximum from the GUI.
- The number and size of currently selected articles is now shown on the
  statusbar.
- BNR2 now keeps track of your Daily and Monthly downloads. You can
  configure the periodic resets on the Server Configuration / Statistics
  page.
- MouseWheel now works properly. Keep the Shift or Ctrl keys pressed to
  scroll by page, else the mouse wheel scrolls by rows.
- You can skip the on-the-fly FileCheck (if this causes a slow refresh in
  the ArticleList, for example) by turning on the corresponding setting
  from the Config / FileCheck page.
- The Queue page can now be sorted by clicking on the column headers. Note
  that sorting by Data or ArticleID columns can take a while if you have a
  lot of articles queued.
- Some cosmetic changes, new icons, and other minor fixes.

Changes in BNR2 Beta 0.6.4
- Newsgroup list download is now much faster
- Fixed a bug causing errors "Attempted to write an uninitialized
  article!" and "Call of TArticle.Write to Offs=2, MsgID="", RefCount=
  3506816256!" when refreshing headers.
- Fixed an erroneous popup message saying a file already exists when you
  mark an article with no filename for download.

Changes in BNR2 Beta 0.6.3

New features:
- LISTGROUP handling. BNR2 now sends a LISTGROUP (or XHDR Lines for all
  articles, if thus configured) during the first refresh of a group in a
  session, and always when you manually refresh a group. This command gets
  a list of all articles in a group, to doublecheck for new articles that
  have arrived out-of-sequence.
- Bandwidth limiter (on ServerCfg window under Advanced settings). This
  works as follows:
	- Every connection is guaranteed 256 bytes/sec (even if you set
	  the total bendwidth to 1 kb/sec) to avoid "no response"
	  timeouts.
	- The connections only follow the lowest-level bandwidth limit in
	  the Servers treeview hierarchy they find. That way you can set a
	  higher-level bandwidth limit, yet quarantee a certain bandwidth
	  for a lower-level server node.
	- You can use the top-level bandwidth limit as a simple bandwidth-
	  balancing feature, as BNR2 tries to allocate an equal share of
	  the available bandwidth to each active connection.
- You can now assign articles in the Queue to get downloaded from a
  certain server. Use the new "Target..." button on the Queue page to
  assign a server to the selected body commands.
- The Queue page has an ETA (Estimated Time of Arrival, i.e. the time
  remaining until all articles have been downloaded) indicator. This works
  by dividing the total size of the queued articles by the average
  download speed (that is, it can at times be quite inaccurate).
- The server password can now be stored encrypted into BNR2.INI.
- You can now change the caption of the BNR2 window, as well as select
  when you want to see the caption and when the short status info, from
  the Appearance tab sheet under the Config page.
- Keyboard shortcuts for changing the score have a new modifer key, Ctrl.
  If you keep Ctrl pressed and hit 0..9, the article score will be 0..-9.
  If you keep Ctrl pressed and hit +, the xcore will increase by 10, and
  when you hit - the score will decrease by 10 (the latter might only work
  from the numeric keypad, depending on your keyboard configuration).
- BNR2 will now detect already downloaded (or existing) files (or parts of
  multi-part files) in the download directory when you mark articles for
  dowmload, and ask you whether you want to download these again, or skip
  these and download only the missing files (or parts).
- As a byproduct of the above, BNR2 will now show the existing file
  matches in the download directory even if you haven't run FileCheck yet.
  However, to let BNR2 know of the existing file matches in other
  directories and in CSV files, you need to run the FileCheck as before.

Bug fixes:
- The queue page column widths are now stored into BNR2.INI, so the widths
  will stay the way you set them.
- Multi-part article temporary files do not have a blank in the trailing
  part numbers any more. NOTE! Because of this DO NOT SWITCH TO THIS 
  VERSION UNTIL YOU HAVE NO MULTI-PART ARTICLES IN THE QUEUE!
- Adjusting score for articles that have not been marked for download now
  automatically marks the articles for download as well.
- A few dozen other minor fixes.

Changes in BNR2 Beta 0.6.2

New features:
- Experimental! There is a new [Colors] section in the BNR2.ini file (make
  sure you start BNR2 0.6.2 and exit it at least once before you edit the 
  values!) that can be used to customize the colors used in the article 
  list. A later version will add a GUI for the color changing, but you can
  experiment with this feature if you wish. The color values are in 
  hexadecimal notation, in the order RGB, with the last byte reserved 
  (should be set to zero).

Bug fixes:
- Fixed the one-extra-byte yDecoding problem.
- Fixed the problem where article sometimes vanish from the download queue
  without getting downloaded.
- Fixed the problem where the download directory was forced to the default 
  directory when you mark articles for download.
- Fixed the problem where the Linux version was unable to combine 
  multipart article parts that had '[' or ']' in their filename.
- Fixed the decoding directory change not getting stored problem in group 
  config window when exiting with Enter.
- Some other minor fixes.

Changes in BNR2 Beta 0.6.1

Behaviour changes and new features:
- Experimental! You can select some articles and hit 'P' to show the 
  experimental "Properties" window for the articles. This allows you to 
  "Swap file set / part numbers", for example. Most of the features of the
  Properties window are still missing, the only things that should work 
  are this file/part swapping and the article flag changing. This is 
  intended for experimenting and evaluation only, I'll hope to have this 
  fully working in the next version.
- You can now select the warning level (Config/General page) between 
  "None", "Normal" and "Verbose". Normal level shows only potentially 
  hazardous warnigs, while the Verbose level shows also informational 
  warnings.
- Now the internal JPG/PNG viewer does not loop over the top/bottom of the
  article list when you go to Next or Prev image.
- The article decoding directory is now fixed into the article when you 
  mark it for download, so after closing down and restarting BNR2 the 
  articles will get downloaded to the correct directory even if they get
  downloaded from a different newsgroup.
- BNR2 now warns you when you mark incomplete multipart articles for 
  download, with the option to skip these but mark the other (complete)
  selected files.

Bug fixes:
- Server reconnect problem fixed.
- Multipart file renaming to the final name now correctly handles the 
  situation where a file with the same name already exists (and does not 
  leave files like "sample.avi" and "sample.avi.1-9" in the decoding 
  directory).
- Kill/Want filter deletion now works properly (the items are removed from
  the ini files as well).
- Duplicate group refresh commands are not queued any more.
- Article list now handles the situation where there are fewer lines to 
  show than fits the screen better (no more hidden items above the topmost
  row).
- When you remove a server also the server-specific directory is now 
  removed.
- Various fixes to yEncode decoding and file saving.
- Some other minor fixes.

Changes in BNR2 Beta 0.6.0
- Automatic reconnect after most temporary errors (like WSAECONNRESET).
- A new setting on the ServerCfg / Advanced page to retry connection after
  any kind of an error. Use with caution, as this can potentially cause 
  problems in WinSock (if Winsock error) or get you banned from the server
  (if you use this to hammer the server after '502' errors).
- Automatic cache size management (the sizes depend on the amount of 
  physical memory and the size of the database), with optional manual 
  settings.
- Kill/Want filter configuration changed, now they both have a separate
  "Configure" window like Servers and Groups.
- You can now Kill and Want based on the current article in the Article 
  List (use right-click menu or press 'K' or 'W') and from the JPEG viewer
  (use the toolbar 'Kill' button or press 'K').
- Groups treeview has counters for New and Wanted articles.
	- New = New headers downloaded during this session since the last
		open
	- Wanted = Headers matching a Want filter downloaded during this 
		session
- "Connection X" -> "#X" in Server and Queue pages.
- Fixed a crash (stream read error) at startup if some cache sizes were 
  too small.
- Fixed an Access Violation in ArtList.TArtList.ExpireOneArticle in 
  response to "423 No Such Article In Group".
- Some other minor fixes.

Changes in BNR2 Beta 0.5.2
- EasyNews looping problem should now be fixed (now you only get a 
  warning).

Changes in BNR2 Beta 0.5.1
- Still more changes to the database flushing and locking system.
- You can now log (debug) the database contents (while BNR2 is deleting 
  expired articles) by giving a command line parameter "-debug", as in 
  "c:\bnr2\bnr2.exe -debug". This will result in several BIG .log files in
  the BNR2 directory. Use this if you experience database corruption 
  problems when starting BNR2. BNR2 also automatically writes such log 
  files if it detects a database corruption itself.
- New "Download at most xxxx newest headers" option on both Group
  Configuration and on Server Configuration.
- New "Add Disk/Dir to a CSV file" button on the FileCheck page. This 
  replaces the "RemDrvDb editor" in BNR1.
- Some other minor changes.

Changes in BNR2 Beta 0.5.0
- "Use internal JPEG viewer" -> "Use internal JPG/PNG viewer".
- New RegExp page on FilterConfig window (filtering by regular 
  expression).
- Sort order is now remembered during filtering.
- Filter box drop-down list is now working (remembers 10 last items).
- New "Fit" button on the JPEG viewer, to fit the image to window.
- New "Kill/Want" page on the Config tab, RegExp-based kill and want 
  filters.
- Fixed yEncode decoding.
- Decoding log files (BNR.csv, BNR.log, descript.ion) now use the actual 
  download dir.
- New algorithms for database locking and flushing.
- Various other minor fixes and improvements.

Changes in BNR2 Alpha 0.4.1
- New error handling, now you get an "Errors" tab if/when an error
  occurs in BNR2. The same error text is also written into errlog.log.
  This tab is invisible if no errors have occured during this session.
- "Auto-refresh headers every xxx" setting now works also for timer-
  based values.
- Some database robustness improvements, and much improved error
  detection and logging for database-related errors. Please send me
  the error log if you get database corruptions!
- No more downloading the same headers from several connections.
- Some other minor improvements.

Changes in BNR2 Alpha 0.4.0
- Made filtering by size to actually work.
- Improved Queue tabsheet behaviour.
- Fixed Marked/Downloaded filtering of multi-part articles.
- Added current download speed indicator to Servers tabsheet.
- Added colors to statusbar server panels.
- Added server preference/speed handling to article download.
- Added Config/Execute settings (setup of executable extensions).
- Fixed a bug in UUE decoding that sometimes thought single-part
  articles were the first part of a multi-part article.

Changes in BNR2 Alpha 0.3.3
- New subject parsing algorithm, should handle some filenames better.
- Added a splash screen image and Help/About dialog.
- Fixed newly-subscribed group refresh problem.
- Fixed multi-part file decoding when the filename was not detected.
- Fixed yEncode decoding
- Fixed some memory leaks in Delphi CLX components.
- Various other fixes and speedups.

Changes in BNR2 Alpha 0.3.2
- Fixed a "division by zero" error in header download that could corrupt
  the article database.
- Fixed "423 No such article in group" handling.
- Fixed a problem where opening a combined group (folder level) and
  marking articles for download could cause the marked articles to get 
  downloaded from the wrong group (thus downloading some completely
  different articles than what were marked).
- Articles are now downloaded in ArticleID order within a priority level
  (same as in BNR 1.x).
- A simple internal text file viewer added (still needs some work).
- Some other fixes an improvements, nothing major.

Changes in BNR2 Alpha 0.3.1
- Fixed "Invalid argument to date encode" message and neverending popup 
  loop when an article expires while downloading.

Changes in BNR2 Alpha 0.3.0
- Article expiring when starting BNR2 is much faster. The database format
  has been slightly changed, so it is recommended you delete your current 
  MsgLst.bnr (article database) before running BNR2 v0.3.0.
- JPEG view hang when invalid JPG format popup message fixed (no more 
  popup, instead you get a beep and the JPEG tab closes).
- PartCheck fixed.
- Multi-part file writing had various bugs, fixed.
- It is now possible to Delete files (both on ArticleList and in JPEG 
  view)
- Queue tab is somewhat more useful than before. You can delete items from
  the queue (Del key) and adjust score (+ and - keys).
- You can set article score (download priority) on the ArticleList using 
  keys +, -, and all number keys.
- Exiting BNR2 now waits until all threads have had a chance to clean up.
- Download directory window now has a checkbox to set the best match CSV 
  directory as a decoding directory for the selected articles.
- Added support for yEncode binary encoding method
- Various other minor fixes
