
HISTORY FILE (reverse chronology)
=================================

NOTE:  RMB is Right Mouse Button.

Changes in v2.67
================

o   Template processing - $IF logic error would end up skipping all
    lines until EOF if it was actually false.

o   Folder rebuild changes - minor; some diagnostic logic added in
    an attempt to catch an obscure, "only on some systems" issue.

o   Better logic to handle corrupt or invalid news status files.

o   Additional diagnostics added in news indexing routines.


Changes in v2.65
----------------

o   Finalizations to various form and menus for this release that
    will see more widespread exposure in the Win32 world.

o   HELP file expanded significantly.  Still plenty to do, but
    a vast improvement over previous content.  Context sensitive
    help isn't triggering; no dialog boxes invoke help.  I'll
    figure out why quickly.


Changes in v2.62
----------------

o   Modified HELP menu to add ways to register.

o   Added some text to the HELP system.

o   Settings->Prompts now has a way to turn OFF the new version
    notifications.

o   There is now a mechanism to try and relieve the 31 day nag if
    MR/2 has been used a minimal of times.  I hate retrying shareware
    a couple of weeks later, after giving up on it the first day due
    to time constraints ... only to find my chance has expired already!
    That's a non-sale for what might have been a decent package, and
    results in a waste of my time.  This should help reduce these
    types of issues with MR/2.

o   More web site cleanup centering on registration options.

o   URL editor would crash on some long URL's.  Fixed.


Changes in v2.61
----------------

o   Some work towards allowing READ ONLY folders, for transporting archived
    folders to CD or DVD media.  Not complete, but I'm working on it!

o   Win32:  Message viewer's RMB->View attachment function was broken during
    the improvements in overwrite file handling.  Repaired.

o   More cleanup of support docs and web pages.


Changes in v2.60a
-----------------
OS/2 specific "catch up" release

o   Memory leak plugged.  Was leaking memory every time a status
    bar messages was updated.

o   pop3 user name now compatible with Win32 updates and can be
    up to 90 characters (for spam-blocking proxy tools)

o   Thesaurus path builder adjusted.  And, a couple of log file
    entries added to aid in debugging loading issues.

o   EXPERIMENTAL:  To aid in experimenting with the Time Zone issue,
    I added a configuration flag.  But I was too lazy to try and fit
    it onto the 6th settings page; it wouldn't be an easy fit and it's
    too late in the evening to add page 7!  So, to see if this
    does the trick, I've added a (temporary!) command line switch:

        /TZ+    tells MR/2 to adjust the TZ for DST (default)

        /TZ-    attempts no adjustment for DST.  This will work in
                the cases where the eCS clock does the adjustment,
                AND for those cases where the region doesn't follow
                DST at all, and MR/2's adjustment assumes it does.

o   Misc bug fixes in core code, as scatter about in the Win32 changes
    below.  For example, search text persistent across folders, news
    client obscure socket crash fixed.  More.


Changes in v2.60
----------------

o   Odd TCP/IP socket behaviour in news client class fixed.

o   Expanded Windows HELP file.  Cleanup and infastructure
    improvements for Windows release.

o   Search text persistent across ALL folders, instead of being
    unique per folder.  By request, and it made sense.

o   Win32 trash folder - under some conditions, trash refused to
    open.  Fixed.


Changes in v2.56
----------------

o   I believe the mouse wheel curse has been ended.  I have
    the mouse wheel moving on the right direction, only for
    "real" mouse commands and it will recognize multiple
    increments.

o   Mouse swiping is also, finally, complete.  Swiping up and down
    should work like a rubber band and reverse when moving in back
    towards the starting "anchor".  Clicking a second time on any
    item acts properly.

o   The Open toolbar icon now opens marked messages in folders
    and newsgroups.

o   The RED color associated with new items now persists when
    scrolling the index view horizontally.

o   Detach files now go to the right paths no matter how the
    "overwrite?" prompts are answered.


Changes in v2.55
----------------

o   Mouse wheel "ghost" messages are ignored.  Some systems sent
    out periodic pulse-like messages with NULL parameters.

o   Focus changes after selecting a notebook tab.

o   Mouse wheel scrolling on message/folder lists that did not fill
    up a single screen caused odd double-listings that "snapped back"
    on click.  Fixed.


Changes in v2.54
----------------

o   Mouse swiping is done.  Finally.  I think.


Changes in v2.53
----------------

o   Mouse swiping revisited yet again.  I think I've got the
    "rubber band" like function down.

o   Replying to messages with displayable text > 32k was problematic.
    You now have up to 64k of reply text nomatter what the size
    of the quoted reply is.  This is a workaround until I can
    do better.  However, even for a new message, the default for
    the RichText control maxed out at 32k of NEW text.


Changes in v2.52
----------------

o   Win32: Better working when used in an alternate path (as in,
    when set up in a multiple account environment).  All internal,
    but things like HELP and all .ORG files are grabbed from the
    mrw.exe source directory.  There will be more work in this area
    as testing progresses.

o   Registration preparations.

o   Some more work on the mouse swiping logic, and while I left some
    code, I undid the visible piece because it was worse than ever.
    I think I'm close, but I have to make another pass at it.


Changes in v2.51
----------------

o   Scroll wheel now moves in the right direction.  I also fixed it
    so it doesn't scroll past the end and expose "white space".
    Also, dragging any grid thumbnail works in real-time.

    Also, mouse scroll up/down when dragging above/below the index
    display is tapered.  The farther you move away, the faster it
    scrolls.

o   Improved the first-time setup of the newsreader.

o   Bugs with newsreader settings addressed.  I found the code that
    caused the news authentication password to be erased on occassion.
    Fixed.  All news server password fields are now masked instead of
    plain text.  Passwords are also encrypted in the news.rc file.

o   There is now a not-too-obnoxious mechanism for announcing the
    availability of new MR/2 Versions.  Checks are quick, in a
    background thread, and made at most once a week.

o   One more pass at spawning external utilities with long file names
    containing spaces (with params including spaces :)

o   Windows version banner on outgoing mail simplified.  No reason
    to list the news version, since it's all embedded in one EXE.

o   Experimental:  Notebook tabs now use "system" font, which is
    bigger and darker than previous font.  Let me know what you think.
    By request, but should I put an option use old/new font?

o   CANCEL on settings forms should now work correctly.

o   Selection of path during detach-to-path fixed.  New listbox
    code wasn't quite right (OwlNext issue).  Calls for a review
    of ALL listbox code (there aren't many places I use a plain listbox).

o   Dictionary and thesaurus files are included in install exe.


Changes in v2.50
----------------
Windows specific changes.

o   Fixed a small memory leak.  Each time the bottom status win text
    was changed, a small bit of memory was leaked.  Over days/weeks of
    running, this could add up to be quite noticable.

o   Mouse wheel now implemented in Grids (all columnar lists).

o   Swiping multiple messages with the mouse no longer skips items.

o   Status messages from fetch/send threads are again displayed properly
    in the status bar.  Actually, an age old placement issue has been
    remedied, too.

o   Directory selected when detaching-to-path now denotes removable and
    network drives with more recognizable bitmaps.

o   Focus issues resulting from returning from scripts and other external
    utilities have been addressed.  I'm still streamlining all of this,
    but the focus-stealing should be over.

o   There were 2 related problems with working with "GUI Orphaned messages".
    Basically, if a message window was opened and it's message index list
    was subsequently closed underneath it, working with certain features
    and even closing this message would crash.  Closing is now performed
    without problem.  Other functions that require the message index will
    nicely inform the user of the issue and ignore the request.  No more
    crashing.

o   Grid DLL was rebuilt for some of the fixes, above.  This gave me
    the opportunity to shrink its size and name it properly (more
    accurately, it was previously released as a debug DLL ... not now).

    To clean up unused DLL's, it is safest if you first run MR/2, then
    delete *.DLL from the MR/2 working set path.  Any DLL in use will be
    kept, those unused will be deleted.  The BDS*.dll, OWL52*.DLL
    and UG*_.DLL should end up getting deleted.


Changes in v2.49
----------------
Windows specific changes.
BETA STATUS (read)

o   I managed to build with the new OWL "next" DLL, and removed
    the show-stopper issues.  There are some new quirks, but nothing
    horrible that I've found in almost a week of running with it.
    For example, the message index notebook likes to pop to the top
    now when a new message beep is announced.  I'll find it :)

    The fact that I was able to use this library is BIG for future
    enhancements.  It also means that I can play with switching compilers,
    although I expect that won't be as easy.

    The OWL619T.DLL file is a bit meatier than the previous version, but
    THIS TIME I do believe that BDS*.DLL is obsolete.  I've kept it in
    the distribution until I can test with a completely virgin system.

    THE NEW DLL MAKES THIS A BETA STATUS RELEASE - which only means it's
    a tad more risky, stability-wise, than some of the past releases.

o   Compliments of the new OWL code is a directory browser, mildly
    tweaked by yours truely.  See DETACH TO, below.

o   The DETACH and DETACH TO PATH routines saw extensive work.  There is
    better overwrite logic, and a BROWSE button on the to-path options.
    Let me know what you think.

o   Fixed issues where MR/2 was installed in a path with spaces (er,
    'Program Files' :), and generated message file names would not get
    passed to external programs correctly.

o   Win98 (and ME? Is anyone using ME or 95 anymore?) remote control.
    It was painful, but I implemented a Mailslot mechanism for Win
    platforms that don't support named pipes.  This would allow
    command line control of running instances to work now across ALL
    Windows platforms.  This should also enable MAILTO's from browsers
    to successfully communicate with a running copy or MR/2 Win.

o   SAVE button now works on Settings forms.  I'll work on CANCEL next,
    that's actually harder to do.



Changes in v2.48b
-----------------
Windows Quick fixes.

o   Win98 apparently doesn't support CreateNamedPipe, which is
    required for remote control.  I'll look for a work-around,
    but using a running instance to launch a mailto URL won't
    work unless I find one (from Win98 only). [LATE NOTE:
    Looks like "MailSlots" will work - will try]

o   At least MR/2 will run now on Win98.  v2.48 broke it, related
    to the issue above.

o   A new mechanism is used to bring the new mail form to the
    foreground when MAILTO's are executed.  Let me know.

o   If no MR2_UTILITY_PREFIX is specified as an environment variable,
    VBS scripts are enabled.  I've got a prototype, but it doesn't
    do anything real.  Yet.  REXX is still (and always will be)
    supported if this env variable has REXX or REGINA in it anywhere.

o   Minor tweaks to the installer screens AND the settings dialogs.


Changes in v2.48
----------------
Win32 specific changes

o   Rebuilding the Outbox index no longer results in a "ghost" line.

o   Changes to "instance exists" checks.  Secondary instance remote
    control is now working (the command line functions of mr2iu.exe
    should now be available via mrw.exe)

o   Installation program now (optionally) registers MR/2 ICE as the
    default email client.  Installation program improvements.

o   FRM*.DLL is no longer needed and have been removed from the
    distribution package.  You can delete it from existing
    installs. FORMS were melded into the BSE DLL.

o   Now recognizes most common mailto: parameters like subject, cc and
    bcc.

o   Fully qualified paths in the attachment path configuration should
    now work better.  I'm rewriting some of this next, anyway.

o   HELP->Ask the Experts now starts an email instead of loading
    web page.  In fact, home page has been changed to do the same
    thing for experts list and managing mailing list subscriptions.

o   Corner icons are now set to me MR/2-specific.

o   FONTS should be working in message windows AND message indexes.
    If you click to alternate/mono font in the viewer, you can then
    select a persistent (monospaced) font.  Switching back and forth
    should all work.  Index item height is adjusted to match the
    selected font.

o   Settings dialogs now have SAVE/CANCEL buttons.  They don't yet
    do anything, but they're there.

o   Code rearranged a tad to facilitate experimenting with OwlNext
    GUI library.  Not quite yet usable.



Changes in v2.47
----------------

o   MIME associations - viewer specification can now make use of
    the new macros: @Browser, @Editor, @Ftp instead of hardcoding
    executable names.  These values are replaced at viewer invocation
    time with the appropriate values from the configuration setup.

o   Replying to news posts with long, malformed reference headers
    would crash while formatting the reply shell.  Fixed.

o   Pop3 user name allows for longer names; up to 90 characters.
    This, to enable long "spam agent" specifications.

o   Windows:  Dialog cleanups in settings.  Reworked some menus.

o   Windows: CHM help file shell started.

o   Windows: Now distributed via an install package.

o   HTML stripper now translates literals to Latin-1 characters.
    HTML Viewer uses TEMP path for html file to display.


Changes in v2.46
----------------

o   Win32: Fonts selectable in message, folder and news index forms.
    Still needs a tweak or two on first selection, but it's very close.

o   Win32: Improved Font selection in message viewer/editor.  Also
    close but still needs a minor tweak (cannot UNSET bold or italics
    once set!)

o   Win32: Message viewer has new Tools menu option:  View in Browser.
    This will load the current HTML message text into the configured
    browser.  If the message itself if text/html, the message gets
    loaded.  If a multipart MIME and the first part is HTML, that gets
    loaded.

o   Win32: Message viewer has new Tools menu option:  Strip HTML.
    Not perfect, but will be soon.  Only for messages that are
    displaying raw HTML ... but this strips all HTML tags and does
    some very minor translations to render a "pure-text" rendition.


Changes in v2.45
----------------

o   Fixed another case where using $@ (address book matching) failed
    to recognize embedded address matches in complex TO lines.

o   Win32: Removed the RTFViewer code from the build.

o   Win32: You may now change the font on the viewer/editor window via
    Options->Font.  Setting is saved to mr2win.ini as ViewerTextFormat,
    so deleting this section will return you to the default.  You can
    also simple select the "System" font.


Changes in v2.44
----------------

o   Fix for UTF-8 Decoding when characters > 0x80 are included as "text".
    This doesn't seem to follow the rules as I read them, but without
    this fix, crashes would occur.  In fact, I include these characters
    now verbatim; no translation.  This, because the characters that I
    encountered when chasing this crash were meant to be "as is" and
    translating them failed.  Will revisit if/when browser-mailers
    get it right :).

o   Various releases to this point added direct support for Win32
    printing and changes to draft printing under Windows.



Changes in v2.41
----------------

o   UTF-7 and UTF-8 Decoding in header literals.  I'll add encoding
    for outgoing UTF-* next.

o   Filtering on "address book match" using $@ tweaked again.  Better
    token-specific matching.

o   Filter disposition form text fixed in OS/2 version.


Changes in v2.40
----------------

o   The filter macro "$@" that means "in address book" was rewritten
    to be less loose.

o   Filter settings for "check no more filters" has been broken into
    a separate checkbox.  You can now stop filter processing on ANY
    filter match, whether keeping it in the inbox or not.

o   Some changes to the way message text is parsed internally.  These
    are low-level enough to be considered "beta", but everything
    still works here.

o   The above was done while adding support for the display of
    UTF-7 and UTF-8 (on SBCS codepages only).  More to come.

o   /SB may be passed as a parameter to MR/2.  This equates to
    "Suppress Beeps".  Beeps on new mail are not generated, although
    newmail.cmd will still be invoked if found to exist.

o   Semaphore has been placed in a window class to try and catch
    an obscure crash.  It remains elusive.

o   Suppressed some logging that seemed less useful.  Can be restored
    with /L2, but less logging results for /L and /L1.


Changes in v2.37
----------------

o   More rework of the settings saving logic - accounts
    were getting empty "ghost" cfw files under OS/2 when
    run in native OS/2 mode and accounts were switched


Changes in v2.36
----------------

o   There was an ugly bug with creating new use profiles ("accounts")
    under OS/2.  You'd often get an empty .CFG file and the settings
    were actually stored in a CFW file (multiplatform).  This caused
    double entries in the LOGIN-> menu.  Fixed.

o   Some minor issues with SMTP Authentication when @ signs were part
    of the login name.  Fixed in an "a" release, but that never made
    it beyond 1-2 people.

o   NEW PO BOX recorded in register.doc and upreg.doc.  I've switched
    Real Jobs to opposite sides of the city, with my home right in the
    middle.  The old PO box is hard to get to.  It will remain there
    for awhile, but the new one is in all the docs in this release.

o   Copyright dates updated.


Changes in v2.35
----------------
Sort of a beta, ONLY because it's been such a long time since I relinked,
AND I am now building on a rearranged home network machine.  Code is
also now under version control system.

o   SMTP Authentication data now is in both platform GUI's (see Options->
    Settings form).

o   Internal email addresses and URL's now reference new mr2ice.com
    domain.  In addition, I've updated the www.mr2ice.com web site
    and even the old, antiquated web-based help now works :)

o   Fixed occassional bug when sending BCC's (BCC copy sometimes
    truncated).

o   Experimental $< token avaiable for filters to catch DBCS messages.
    Sort of works - documented here to make sure I finish it up.

o   Some more semaphores used in Win32 version to try and stop
    some occassional crashing.

o   Various small bug fixes and tweaks.  Some left-over debug logging
    still in until bugs are found.


Changes in v2.31
----------------
BETA - I had to rearrange code in a couple of DLLs due to a silly
technicality (OS/2 only - Win32 is One Big EXE)

o   SMTP Authentication test case.

    I have a system I think is working.  If handles AUTH LOGIN, and
    seems to work correctly with work's server.  However, my server
    doesn't fail if AUTH fails, as it's not required!

    NOW, to test this, I made no GUI changes.  There probably SHOULD be
    new settings fields for SMTP user and SMTP password.  But I didn't
    want to change forms until I knew this worked.  So ...

    Instead of making the Options->Settings: SMTP host look like this:

        smtp1.mail.com

    It now (can, optionally) look like this:

        fred:fredspass@smtp1.mail.com

    Where "fred" is the user is and "fredspass" is the password.  If you
    specify a syntax like this, MR/2 uses EXTENDED smtp protocol.  I    f
    you don't have an "@" sign in the SMTP host, it works the same-old
    way it has for years.


Changes in v2.30c (win)
-----------------------
Minor focus and crash issues fixed to this point.  Things seem
to be quite stable!

o   Win version only - focus issues caused disappearing notebook form
    and crash sometimes after message close.

o   WIN: Purge news on exit now functions.  Not only that, but it
    works when switching accounts (needed in OS/2 version).  ALSO,
    News group page has a RMB option to manually purge news data.


Changes in v2.30
----------------
This will be a quiet non-beta release.  As I confirm its stability,
I'll publicize its existence.

o   NEW low-level "core" DLL's.  This fixes a bug that caused delays
    when switching accounts and when running some external functions
    from within the editor (like, editing externally or manually invoked
    REXX functions).  These delays increased over time.  Things should
    be snappier now.

o   A couple of new environment variables are set for rexx exits.
    MR2I.NORMALIZED-FROM and MR2I.NORMALIZED-TO are now set to
    bare, stripped-down email address matching from and to,
    respectively.  If multiple TO's exist, only the first appears
    in the variable.

o   Some focus issues addressed when using +/- and some accelerators.
    Please report any other annoyances!

o   NEWSUTIL.ORG was improved to be multiplatform AND the interface
    that used to work with dejanews.com (and ceased working long ago)
    has been replaced with an interface to google.com.  As defaulted,
    CTRL-F7 will show a google thread tree for the current message,
    starting with the FIRST message.  CTRL-F10 will do the same but
    start at the CURRENT message.  CTRL-F8 will show an author
    profile for the poster.  The script now makes use of the new
    "Normalized From" environment variable for author profiles.

o   MSGUTIL.ORG was improved mildly to be multiplatorm.  It detects
    whether it is running under Windows or OS/2.


Changes in v2.29l
-----------------

o   Win32 Fixes ONLY.  There was one other issue that corrupted the
    program's heap on account change.  If the subsequent login name
    was longer than the starting name, heap was corrupted!  Fixed.

o   New command line mode meant for advanced debugging.  "/~" will
    not activate a periodic heap check.  This is attached to the
    "update update titlebar time" routine, which also triggers
    during mail polls and account switches (and other major events).
    If this command-line flag is used, heap is check every time
    the titlebar is updated.  If found to be corrupt, a note is
    make in the log file, and two "beeps" are sounded.

o   Mark as Permanent now actually does something.  Before, in Win32
    versions, you (sometimes) could mark messages as permantent,
    but they could still be deleted!  Also, the INBOX RMB menu
    has been corrected to add the two relevant "mark as" options.

Changes in v2.29k
-----------------

o   Quickie bug fixes for issues added in previous version.  Bad
    Programming practices led to a sloppy string match routine used
    by filters.  This fix actually improved performance a very minor
    tad (but in background threads anyway)

o   Modified the BuildIndexEntry routine to better parse messages with
    no FROM or TO data.  Also, improved the header date parser mildly.


Changes in v2.29j
-----------------

o   I spent a considerable amount of time trying to find the lockup
    (temporary, but annoying) that occurs sometimes when switching
    accounts.  The issue may persist, as I never found "it" directly.
    However, I did discover some things that may have contributed.
    These fixes are, by themselves, Big Ones, as they were probably
    corrupting the internal heap over time.

    Things like using new/delete (C++ operators) to acquire/free
    memory, and when used for "self expanding" blocks, realloc()
    was used to expand the memory (wrong ... but appears to work,
    usually?)  Mixing of calls to malloc with C++ "delete" and C++
    "new" with calls to free().

    In one low level, used by ALL tcp/ip routines, code allowed for
    writing past allocated memory by 2 bytes.  Bad!

    Some will remember the TWO BEEPS on occassion when switching
    accounts?  I scoured my own code and couldn't find where I was
    making these sounds.  But then I found it.  The lower-level
    ObjectPM library had code in the bThread destructor (code that
    executed when a thread was being closed and deleted) that
    did a heap check and beeped if it was corrupt.  Changing accounts
    requires the deletion of two threads - and there's what led me
    to the coding issues fixed.  Will look for others.

    Oh, finally, this same code was in the Win32 version and could
    have also destabilized that over time.  However, it appears the
    Win32 libraries handle this better ... perhaps they have to :)


o   Text Search would not correctly search for criteria starting
    with a digit.

o   Added a new cryptic freeform filter command - "$@". When used
    like so:

        {F}$@

    says "if the FROM email address or real name appears in my address
    book". This is good for copying/moving messages from known senders
    into an "important" folder, for example. When used like so:

        !{F}$@

    Can be used to filter email from UNKNOWN senders to some folder.

    Also accomodate individual addresses in the GROUP address
    book, as long as they are internal to MR/2 (it won't look in "*.lst"
    type external files). Some smarts are put into the comparisons to
    differentiate a "real name" and "email" part to the source field.

    In addition, a new header-field modifier has been added. Previously
    {FTS} would say "check From, To and Subject, in that order". CC data
    was not available in this fashion, but is NOW with the "C" specifier
    ("{TC}nick@secant.com" will check for my personal email address in
    the TO field or the CC field.


Changes in v2.29g
-----------------
Beta Status continues - we're getting close to a v2.30 tho

o   UIDL mode for ATT customers was malfunctioning since ATT
    updated their mail software.  Extra spaces between returned
    data was confusing MR/2 - fixed.

o   New filter disposition option - Remove from POP3 server.

o   Other very minor fixes.


Changes in v2.29e
-----------------
Beta Status continues.  Quick fixes - enhancements

o   Window focus issues addressed under OS/2

o   A "normalized" email address, usually unseen by the user, now is
    trimmed of leading whitespace.  This became an issue with a news
    user, as the email address is used to build news message-id's, and
    (illegal) spaces were embedded in certain cases.

o   EXPERIMENTAL, but it works on my system (after I did lose copies of
    a couple of messages :).  FILTERS now have a new dispostion checkbox.
    "Purge from POP3 server NOW".  Has no effect if not saving messages on
    the pop3 server, however, it does purge after downloading the header
    and/or complete message (depending on the type of filter).

    NOT ONLY does it issue a DEL command to the pop3 server at the time
    of downloading, but it records the UID with a very OLD date as a
    backup.  This way, if communications with the POP3 server fails before
    "close" and the deletes are rolled back, the forced-purge messages
    will be removed on the next poll (assuming "Remove from server after
    X days" is selected ... if would be ok to set this to something
    like 180 days or higher for these messages without effecting
    anything else.

    Since removing the message from the pop3 server is a fairly final
    action, users should use this option with care.

o   FILTER FORMAT CHANGE - minor, because of the above new option,
    documented for those who need this info for utilities.  A
    flag was appended to the end of the last "FLAG" string.  The
    15th position in this flag string is a Y/N marker indicating
    whether matching messages should be immediately purged from the
    pop3 server ("Y") or left alone ("N", the default).

o   FILTER logging - when running with a logging level of 2 or above
    ("/L2" on the command line), FILTER MATCHES are written to the log
    file.  This may help with advanced filter debugging.  Look for the
    word "MATCH" (all caps) ... the TAG of each filter matched is
    included.



Changes in v2.29d
-----------------
Beta Status continues.  Quick fixes.

o   Folder Sort now sticks. More accurately, it's now read properly
    from the INI file (OS/2-only issue)

o   MOVE UP and MOVE DOWN in the filter list is now skips over
    hidden entries correctly.

o   Low level TCP "read block" routine checks more specifically for
    the correct sequence of characters.  Previously, high-end ASCII
    at the end of a tcp/ip recv() block could confuse MR/2 into
    a false "all data received".

o   URL building done by the message RMB menu now does a much better
    job of cleaning up and presenting a usable URL.  Marked sections may
    span lines and embedded spaces, tabs, CR's and LF's are stripped.
    (URL Editor, FTP and Browser functions work better)



Changes in v2.29(c)
-------------------
Beta Status continues.

o   Template selection logic added in v2.28 is now usable for NEW
    messages, too.  When tabbing out of the NEWSGROUP(S) line, or the TO
    line in the case of an email, and the template was not automatically
    selected via the reply botton, an auto-select is performed.  It
    follows the same algorithm as defined below in v2.28.

o   Address form has a Template Tag field and ordering has been fixed.
    Template tags are used by the auto-template selection logic added
    in v2.28 and improved here.

o   Filter List form has been expanded to show more info.

o   Lockup on exit (during or after "Emptying trash folder..."). This
    was a toughy, and I'm still not exactly sure what was going on.
    However, in a sense, I "cheated" and it seems to be working fine.

    Immediately after checking for the need to empty trash, MR/2 would
    call Close() on its parent Frame Window object, which has always
    been successful at closing the application (and is the correct way
    to do this).  Lately this has been locking up, and suddenly, for me,
    it would ALWAYS lock up.  So, I experimented.

    I now call the runtime exit(0) in place of this.  It appears to
    work just fine, and no more lockups occur.  However, we'll watch
    for awhile before we call it a complete success.  And, ITMT, I'll
    still search for the Real Answer.

o   NEWS group list fetches.  Well, we found ONE news server, at least,
    who did not make a distinction between upper and lower case group
    names.  Basically, I was fetching "non-alpha" group names as a unit,
    and including upper-case A->Z in this list.  Usually, lower case
    groups were NOT returned, and in case some upper case group names did
    exist, they would be collected in this group.  Well, someone's news
    server returned ALL lower case groupnames when passed upper case
    letters-to-match.  Hence, an attempt to collect the entire list was
    make, which failed badly.

    At this time, I've removed the attempt to get upper case letters.
    I will probably add a settings flag for this, or perhaps even let
    the user override the string I use.  I do thing it's a very minor
    issue, but I'd like to "fix it right".

o   Filter list now has an RMB popup/context menu.  Entries included
    for New/Edit/Delete in addition to new CLONE logic (make a copy
    of selected filter and open it for editing).  Also, "To Top" and
    "To Bottom" to aid in ordering filters.

o   Many smaller but obnoxious bug fixes included.


Changes in v2.28
----------------
Beta Status continues.

o   POP3 servers that didn't return a SIZE value with their
    first acknowledement line to a TOP command were unusable with
    MR/2 for BY-SIZE filters.  AND, manual mode would fail to
    record correct message sizes.  I was refamiliarized with the
    POP3 RFC (thanks, Bruce!) and implemented use of the LIST command
    when this happens.  Prefetching by size and manual mode should
    be more dependable.

o   NEW FEATURE - very handy for POP3 manual mode users AND those
    prefetch filtering by size.  ADVANCED SETTINGS now has a configurable
    value for how many lines to fetch when getting a message's header.
    The old MR/2 default was/is ZERO, which means that only header
    would be returned.

    The user may change this value to something a little more
    substantial.  The performance impact of fetching, say 100 lines,
    as opposed to only the 10-15 that consitutes the header is minimal.
    The differences are:

        If the entire message is fetched in the specified number
        of lines, it is registered as a complete message instead
        of just a prefetched header.

        If the entire message ISN'T fetched, the user has a top
        portion of the actual body which can help determine
        (by visual inspection) if the rest of the message is
        desirable.  For example, in tests, the actual name
        and sender-text preface to an attachment was visible.
        Unfortunately, due to the very nature of the implementation,
        only info on the FIRST detachment is probable.

    NOTE that values for this field should NOT be set too low, with
    the exception of ZERO (operate in the old header-only fetch mode).
    While no range checking is done at this time, a value of 1 or 2,
    or any lower than 15 would certainly cause problems.  Intent is
    to allow values of 50, 100 or higher.  The author has achieved
    great results with this set to 120.

o   FOLDER entries now may be defined with an optional GROUP tag.
    This text value is used in a new enhancement that will help
    auto-select reply templates.

    What has been added is:

    -   New field on the FOLDER EDIT form called Group.

    -   Displays in the folder list as the last column

    -   Template default selection tries to match the first word
        in the template name AS A WILDCARD against the group name.

    -   First template that matches becomes auto-selected when
        replying.

    -   You MAY define a custom FORWARD template for any group.

    -   Newsgroup names are used as the "group" for news replies.

    So.  I edited the folder data for my two coin mailing lists and
    assigned them to group COINS.  I have another mailing list I gave
    the group name BHNC.  When I reply to a message in one of the two
    COINS folders, the logic says:

        -   Look for a template name whose first word
            wildcard-matches "COINS".

        -   If not found, use the default (first) template.

    I created two new templates named "COINS Reply" and "BHNC Reply".
    Each is selected when it should be, and all other folders still
    select the default reply template, as they should.

    I also created a template "comp.os.os2.* Reply".  Whenever I reply
    to anything in the corresponding news heirarchy, this template gets
    selected. Any other newsgroup, the default "News Reply" template is
    selected.

    NOTE that some new issues with templates (and phrases and mime types,
    oh my!) have come to light.  More changes coming!



Changes in v2.27
----------------

o   BETA - minor stuff, but a low level tcp/ip SEND function reworked
    to better handle large posts to newsgroups (or any other large
    send of block data).

o   Minor cosmetic GUI fixes.


Changes in v2.25
----------------
A "stability" release before I start changing some internal data
structures and working on threading some other functions.

o   More bug fixes, some specifically for the Win32 platform, but many
    dealing with "core" issues.

o   In preparation for a proposed new filter type, there is now a way
    to queue "new mail" for addition into any account's inbox.  Simply,
    before each poll for new mail, a subdircetory is checked for message
    files to include as part of the "new mail" process.  Using the default
    MAIL account as an example, placing a message file with a .RCV suffix
    in the xfer subdirectory of mail (i.e., "mail\xfer\new00001.rcv")
    will result in this file being included with the results of the next
    mail poll.  If no mail is found via the normal poll route but a
    single file still exists in the XFER subdirectory, MR/2 will report
    ONE new message.  NOTE THAT the xfer files imported are also deleted.


Changes in v2.21
----------------

o   Quite a few minor bug fixes, but nothing I can list specifically.
    They've been fixed as found.  However, there the newsreader
    has been fixed to now work correctly with a particular NOTES-based
    newsserver that seems to be growing in popularity.

-   I've also started archiving map files to aid in further debugging
    of harder-to-find bugs.


Changes in v2.2
---------------
Since the news engine has proven to be, in my opinion and others',
much more stable than the CTREE version, I'm calling this a release.

o   When trying to detach a text part with a file name, a lockup
    often occured.  Fixed.

o   Switching accounts when the newsserver was being used caused a
    double-delete of some program memory.  This crashed instantly in
    the Windows version, but didn't in OS/2.  My guess is that a
    crash would occur at some random time, later, under OS/2.  Fixed.

o   Since the "/" character was used to delimit a newsreader username
    from a password, any use of the "/" character in either would
    not work properly.  This version stores settings using "\" as
    the delimitter.  Old settings are converted transparently.  Users
    suffering from this problem (one known :) will have to use
    Options->News Settings to check their username and password.

o   Several smaller bug and cosmetic fixes; too small to remember.


Changes in v2.19zj/k (Beta)
---------------------------
Mostly MIME and attachment handling improvements.

o   Minor bug fixes like RMB->Printer setup now works.  KEYS.TXT
    updated to include some missing and previously misdescribed keys.

o   New MIME option (Options->Settings->MIME) that control whether
    TEXT attachments with file names are displayed as text OR detachable
    parts.

o   Display bugs when base64 text parts were displated fixed.

o   Messages sent to a list of address, with one inadvertently left
    blank (e.g., "one@two.com,,three@four.com") often resulted in the
    BLANK sending to a random, unintended address. Fixed.

o   MIME behaviour improved for attachments declared in the MAIN header.

o   On INBOX page, empty dot icons that represent headers-only (from
    using manual mode OR creating pre-fetch filters) are clickable.
    You can click on the dots and they function similarly to news
    pages.  The dot will turn red and the body for that header is
    queued for fetching.


Changes in v2.19zh/i (Beta)
---------------------------

o   News:  extremely long message id's are truncated (max MR/2 size
    is 120 chars).  Should no longer crash.

o   /Q: fixed.

o   Display of base64 text attachments had some "ghost" text from its
    header displayed.  Fixed.

o   Other very minor fixes.


Changes in v2.19zg (Beta)
------------------------
Many smaller bug fixes and enhancements, not sure if I'll remember
them all:

o   News database minor fixes. Better LRU algorithm for the node
    cache.  Data files sometimes marked "clean" before completely
    flushed - corruption later could cause crash.

o   Buttons, while paging through messages now change to match
    context of current message, and work correctly (Send, Resend,
    Reply).

o   Follow up field in news Edit Header no longer appends the
    default domain if set (should be NEWSGROUPS in here).

o   Watch/Kill on author normalized the email address so that
    double quotes don't interfere.

o   BETA - needs cosmetic work.  Replying to a news post with a
    FollowUp-To header now identifies this fact and gives you the
    (easy) option to agree, or follow the original path.  Form is
    ugly, particularly with large group lists, but it works!
    Followup to POSTER preserves the source newsgroup list but
    unchecks newsgroups and checks only email-to.

o   News fetch queue - when many articles are queue, the mechanism
    for "demand fetching", that is, double clicking on a header,
    did not dependable insert the desired article in the FRONT of
    the queue.  It would go to the end, and you'd have to wait.
    Now works properly, althought there is an weird issue when
    background fetches are filtered.  Still, much better.


Changes in v2.19zf (Beta)
------------------------

o   Two LARGE indexing bugs resolved.  One created duplicate keys
    every time a news header's status changed.  This caused confusion
    later, as many keys could point to the same header, and when a
    header was removed, only one key was deleted.  Keys could point
    to data that was not there.  The second one was a basic bug
    in the key searching logic (this existed even in the code I
    acquired originally).  Appears to be fixed after testing
    by creating 230,000 random keys, logging each, reading each
    back by key, then deleting them one at a time.  No errors,
    and the final index was empty.


Changes in v2.19ze (Beta)
------------------------
There is a ton of newsreader work in here.  No real changes to
the database ... while we still have at least one sporadic
crash (at least here), I haven't pinpointed it yet.  And,
I've determined that there's still a data leak somewhere.
Also, as discussed below, there is still some work to be done
on failed article body fetches ... what to do with what does
get fetches, and how to retry later and/or indicate a problem.

o   The empty text attachment that appeared at the end of
    outgoing MR/2 messages has been trimmed off (again!).
    It was a harmless cosmetic issues, but some other mailers
    considered these real attachments and stockpiled them.
    Fixed once before but somehow lost.  It's back.

o   Aggressive rewrite of the newsreader threads.  Mostly to
    better handle errors, and to be more persistent when chasing
    a response from the newsserver (programmed retries added).

o   Bad pointer bug when the newsserver disconnected unexpectedly.
    Fixed.  This happened only on large data fetches (where the
    receive buffer was expanded), but could have all sorts of odd
    effects, perhaps displaying problems MUCH later on.

o   Master group list fetches reworked further.  MR/2 still askes
    for the grouplist somewhat-alphabetically.  And it will retry
    5 times on each section.  However, now, if a section fails
    after 5 times, THAT SECTION is used as a base prefix and then
    that prefix is requested in somewhat-alphabetical chunks.  This
    routine is recursive and will try very hard to acquire the
    entire group list.  For example, MR/2 will ask the news server
    for all groups [non-alpha]*, then a*, then b*, etc.,.  Now, if
    c* happens to fail 5 times, MR/2 will break the c's down into
    groups like c[non-alpha]*, then ca*, then cb*, etc.  My personal
    newsserver has a problem with a clump of AOL* groups.  MR/2
    eventually collects these by asking for aol.a*, aol.b*.

    It's thorough and persistent, and I think it will retrieve all
    but the most troublesome newsserver lists.

o   Getting the new newsgroup list now retries up to 5 times before
    giving up.  I found no way to divide this list, so this is the
    best we can do for now.  It works well on my personal system.

o   Fetch Headers now has the retries inline.  IOW, it will retry
    inside the current group until all headers are fetched.  The
    previous method of getting ALL NEW NEWS when any one group
    failed was confusing and inefficient.

o   News status window messages changed and cleaned up.  I've got
    some other ideas ... coming up!

o   Fetching an article body now detects and incomplete article
    and retries up to 5 times.  However, on the fifth time, the
    article is stored as is (and this needs some thought and work).
    Previously, whatever was fetched on the one attempt was stored
    with no indication of error.

o   If you tried to RMB->Detach on an expired article, a crash would
    result.  Fixed.

o   There was some oddness when enabling "fast fetches".  This tells
    MR/2 it can ask the newsserver for an article by MESSAGE-ID
    directly instead of going into the specific newsgroup and asking
    for it via the newsserver-specific article number.  It appears,
    at least on my server, that the by-messageid mode can reliably
    FAIL, while the newsgroup+artno method will tend to work better.
    And, the code that tried "the hard way" in the old code was
    often prone to failure because of a socket disconnect by the
    first attempt (no error checking).  NOW, if the fast-fetch
    fails, MR/2 will revert to the group+artno method, accomodating
    closed conenctions (up to 5 retries).



Changes in v2.19zd (Beta)
------------------------

o   NEWS: Master Group list is now acquired in smaller chunks (28 pieces,
    pseudo-alphabetically).  Up to 10 retries per chunk, however, you'll
    end up with whatever succeeded.  If it fails, a note is passed to
    the news status window (begs for a popup warning ... coming up!).

o   News Collector now behaves properly for retries.  If a request
    for headers fails, it will retry until it gets them all.  If
    another error occurs, it is noted and retrying is stopped.


Changes in v2.19zc (Beta)
------------------------

o   Caching reworked for news database indexing.

o   Text Search through news now ignores unfetched articles and only
    searches articles that have been fetched.  In addition, articles
    are not marked as read by the search itself.

o   References headers chopped at a maximum of 21.


Changes in v2.19za (Beta)
------------------------

o   I was provided an example of a message where the MIME part was
    MULTIPART/MIXED but was still marked as quoted-printable.  This
    was doing strange things, and while I question the legality of
    the headers, other mailers displayed it ok.  Handled.

o   More use of semaphores in higher level code.  Everything
    obvious, plus some, has been massaged to be thread-safe.

o   Overview record status mechanism wasn't working on updates.
    One symptom of this was that cross-posted message weren't
    always handled correctly in "other" groups.  For instance,
    deleting a cross-posted message, with the option
    "DELETE ALL REFERENCE" turned on would fail.  Fixed.

o   Wow.  Can you say bug?  In researching the problems caused
    by my flakey newsserver, I came across some Very Bad code.
    I would often see errors reported by MR/2 because my ISP
    closed the socket connection while getting headers.  As
    it turns out, in many cases, MR/2 would assume success and
    bump the last read counter.  IOW, headers might be skipped.

    I noticed this because, after posting a couple of articles
    from work, I went home and looked for responses.  Not only
    were there no responses, but my original posts were missing!
    After staring at the logs, I saw cases where MR/2 had asked
    for 100 headers and the server returned 20, then closed the
    connection.  MR/2 simply assumed that it was done.  Ooops.
    Now, the header block is actually EXAMINED, and the last
    article number read is taken directly from this block.

    My ISP's newsserver was particularly bad last evening, and
    provided the perfect opportunity for testing.  When I was done,
    MR/2 was fetching ALL headers, nomatter how many errors were
    encountered.

o   In addition to the above, the retry loop is now much more
    sensitive.  If the above scenario occurs (the socket is closed
    before all headers have been fetched), MR/2 stops the current
    loop and goes into "retry mode".  This never really happened
    before, but it does now!  It will loop until all pending
    headers have been fetched.

    There is a news setting for the delay between retries.  And
    this works well, however, the default is 1 (second) and this
    results in a pretty aggressive loop.  It may be desirous to
    change this to a more significant count of seconds to pause.

o   Theoretically, the above error corrections should ALSO handle
    the misleading "Bad group!!!" message that occured upon a
    broken connection.  It may occur once (shown in the news
    status window) but this should cause a "retry".

o   Retries are not as smart as they could be.  Instead of
    starting at the point where the connection was dropped, it
    starts just like a fresh poll-for-headers would, at the very
    first newsgroup.  However, it seems to do the trick!


Changes in v2.19z (Beta)
------------------------

o   More fixes and tweaks to the new indexing scheme.

o   Purge on exit was totally messed up after the indexing
    changes.  Caused all sorts of odd things.  Fixed.

o   New Groups mechanism hasn't worked reliably for some time.  It
    did after Y2K, but certain servers must have changed their rules
    for parsing the date.  Fixed.  Should "catch up" with new groups
    the first time you run this version.

o   New indexing scheme now makes use of semaphores to make sure
    threaded use doesn't cause conflicts.

o   More semaphore control between higher level code (used the
    existing mechanism, just added control where is was lacking).

o   REINDEX utility changed so that it will rename a source message
    from a name that isn't 8.3 to one that is.  This was found to
    be a problem while working with the old PM Mail converter.  It
    converted things just fine, but the resulting files/index didn't
    match.  This utility is used by the script and it appears to
    fix the problem.

o   Display of address book entries with LONG lists of addresses in
    the ADDRESS part (over 2200 bytes) would crash.  This, in the pick
    address and address list maintenance forms.  Fixed.

o   Logging reduced some, controled in other ways.  I've reduced the
    amount of logging in general.  Some of the bulkier displays have
    been moved to require higher logging levels to get them to output.
    The /L command will now produce smaller log files, while /L2 gets
    a bit more detailed and /L3 almost as detailed as before.


Changes in v2.19 (Beta)
-----------------------
I've been ripping though code in what I'll call "internal releases".
This release will eventually be called v2.2, simply because of the
massive rewrite of the news database engine.  It's been completely
reworked.

o   News.DLL contains a completely new indexing scheme.  Old IDX
    files are not references by this DLL (you can delete *.idx).
    This one creates 3 files:

        OvrArtNo.idx
        OvrMsgId.idx
        ArtArtNo.idx

    With the two artno indices have a "split" function.  They
    index the DAT files by article number (MR/2 generated) but also
    maintain "free" reusable space within the corresponding DAT
    files.  In addition, OvrArtNo.Idx also maintains a "quick
    reference" header status value with the key.

    Reuse of previously-deleted space is now fully functional.
    Previous versions (only the most recent) did manage to reuse
    deleted HEADER (OVERVIEW) records, but the code to reuse deleted
    ARTICLE space was never activated.   Both reuse mechanisms have
    been reworked and I've tested them and they seem to work ok.

    Also, a few modifications to the polling mechanisms (for
    example, disabled newsgroups are listed after a fresh startup,
    as are empty groups).

o   News Engine startup changes - corruption detection.  I've still
    got a few ideas to improve this, but it's already been improved
    a great deal.  Basically, the new indexing scheme is heavily
    cached.  This means that if MR/2 is exitted without these files
    being properly closed, they will be inconsistent.  MR/2 detects
    this and will rebuild them on next start (as it always has),
    however ...

    If the IDX files are found to be MISSING, then the DAT files are
    first packed, and then the IDX files rebuilt.  However, if the
    IDX files are there but found to be "suspicious" (not closed
    properly), they will be regenerated from the DAT files, but the
    DAT files will not be repacked.  I will add some internal
    consistency checking and will be able to mark an IDX as
    suspicious, and perhaps even rebuild it in real-time.

    IDX files are still completely rebuildable from the DAT files.
    They can be deleted at any time and the system will recreate
    them.

o   INDEXING improvements - phase II.  The initial test release of
    the new indexing scheme seemed to work well.  However, it was
    lacking a few "features" that have now been added.

    -original version expanded files as need and only as needed (in
    relative small chunks).  With three files active, this promoted
    fragmentation of files.  The current version extends the ARTNO
    index files in about 48k chunks, while the MSGID index uses 196k
    chunks.  This may be refined over time.

    -original version left unused space between index nodes.  This
    has been removed.

o   mr2idb.dll is no longer needed.  A small text file, included in
    this release, should overwrite it and save some disk space.

o   "Remove attachments" has been reworked to "Delete attachments"
    to show more seriousness in the action.  Some users found an
    unintended meaning in the original text.


Changes in v2.1
---------------
This is the stability release of all previous beta code.  In
actuality, none of the changes were unstable, but the evolution
per release might have been an issue for some.

o   Nested MIME changed slightly from last release.  When processing
    a message/rfc822 type, MR/2 encodes the HEADER of the sub-mesage
    as a message/header part.  This allows the user to control
    whether or not it appears as text in the message.  The additions
    to MIME Associations I will suggest starts with these showing.

o   Suggested MIME Associations.  In light of the new way of
    handling nested MIME messages, there are two associations that
    would be handy to add.  These new types define Message/Header
    and Message/Disposition-status as displayable text.  Not
    required, but this mimics best the old behaviour, and the
    display behaviour of other popular mail readers.

    Running the included script "addmime.cmd" will add these
    values to your mr2i.mim file.  You need to be OUT of MR/2 when
    you run this script.

o   Added support for Windows-specific character sets on incoming
    mail/news: Windows-1250 through 1257.  Some MS products seemed
    to be making their own rules (using non-standard charsets, or,
    since it *is* "Microsoft", forcing a news psuedo-standard).

    These character sets may be selected as "default incoming"
    on the MIME settings page.

o   Several semaphore contentions, once that might cause the program
    to "lock up" for 30 seconds under obscure circumstances, were
    fixed (Windows version suffered from these more severally :).

o   NEWS USER PLEASE NOTE.  The sections below describe some
    substantial changes to the INTERNAL news mechanism.  The current
    code is much more stable (but still far from perfect), but does
    require that you restart with a CLEAN news database.  I had
    made this only a SUGGESTION before, however, users had enough
    trouble that it appears to be a requirement.

    You don't have to lose your settings for news, simply, the
    news database needs to be restarted.  Please, SAVE ALL NEWS
    articles you might want to keep to folders, then, as soon as
    you can, run the included small script file:

        rsetnews.cmd

    This scripts deletes all DAT, IDX and NDX files (default,
    single-user account MAIL only!) .  Oh, that does mean that you
    will lose any group-specific sort settings.  Sorry, this is
    required.  NOTE that this script goes a step farther than
    using MR/2's internal settings to reset the database.  With
    this script, the GROUPS.DAT file is erased, which is important.

    The NEWS engine will pick up fetching new news right where you
    left off, however, any old news/headers will be deleted first.

    If you have already adjusted your news during participating with
    previous releases, this step need not be taken.  This is for
    users moving up from v2.05 specifically.

    ALSO NOTE that the need for resetting the database may occur
    again, in the not too distant future.  I still have some
    stability issues, and fixing these often involves changing
    data structures and invalidate older data.



Changes included in v2.09c
--------------------------

o   Support for INCOMING Windows-1252 character sets.  Will decode
    body and properly formatted MIME header sequences.  I won't
    support this as an OUTGOING character set unless absolutely
    forced.  I see no need for it on outgoing email.

o   New checkbox on MIME settings:  Expand nested MIME parts.
    This is now working how I want it to, with some room for
    discussion.  I'm not sure whether or not I like my new
    "text/messageheader" part.  I'll discuss this more online
    before I finalize the thinking.

    Turn this on (I do it for you to start off :), and nested
    MIME messages are processed so that all parts are moved to
    the highest level parent message. (Thought!  I need to find
    some of the old appledoubles and try those).

    The "old" display method can be chosen permanently by unchecking
    the settings box.  Alternatively, there is a session-persistent
    override on the message's Option->Show MIME Parts menu that will
    allow you to change the behaviour until you exit (or use the
    same menu option to toggle it back).

    Will see how it looks after some user feedback.  This is also
    in my Win32 version and should show itself next week.


Changes included in v2.09b
--------------------------

o   New "Filter Wizard" allows easier creation of a filter based
    on a marked message in the index.  RMB->Filter->Create.  Open
    for suggestions on how to improve this ... but it's a good
    start.

o   News: Fixed a bug with multiple accounts where the new group
    list logic resulted in some combining of group lists.

o   Switching accounts with news threads active should behave now.
    Previously, crashes were almost guarenteed (if a news thread
    was active when switching).

o   Reindexing of a folder (including trash) should be quicker.

o   When news headers are deleted, they are also removed from the
    fetch queue if present.  Previously, the headers would result
    in a erc=101 in the news status window.  This error was accurate,
    but harmless and still confusing.

o   Phantom F0XX directories were sometimes being created off of the
    root MR/2 install directory.  These were always empty and can
    be removed.  They are no longer created.

o   Messages that an inbound filter deletes without copying anywhere are
    now moved to the trash.  Previously, these messages would just
    disappear, and using the trash is much safer.


Changes included in v2.09
-------------------------

o   Mostly Newsreader-specific changes dealing with dependability and
    reducing "data leakage".  This, where news data would be stored in
    the database files but invisible to the user, hence never being
    seen (nor deletable).  Continuous, "slow" DAT file growth resulted.
    Dozens of other fixes, all with news, including reduction of
    log messages unless /L2 is used.

    The groups.idx file has been eliminated.  The indexing of the
    groups file is now performed internally, and completely
    in memory.


Changes included in v2.08
-------------------------

o   Fixed TEXT SEARCH for NEWS index lists.  Previously Text Search
    when in a news folder would do nothing productive.

o   Switching TO compatibility mode was slightly broken in the last
    release.  Fixed.

o   POP3 count was not being read correctly from the INI file in
    compatibility mode and was often displayed as zero.  You
    were also prevented from manipulating it.  Fixed.


Changes included in v2.07 BETA
------------------------------

o   The "beta" change I made isn't very risky, but I wanted to label
    this as such because it's in a low level spot.  The BC++ for OS/2
    runtime seemed to have a problem with opening files in APPEND
    mode.  Particularly under heavy multithreading.  Hence, appending
    UIDL's to the fetched record would sometimes actually overwrite
    the FIRST and SECOND entry in the file.  What would happen,
    on subsequent fetches, was that the overwritten UIDL's would
    look like unfetched messages, and they'd be fetched again.  I
    say slots 1&2 get overwritten about 10 times in a 220 message
    fetch, and each subsequent fetch failed to get them all.

    No data was lost, ever.  The results was several DUPLICATE
    messages, as things would get fetched twice (or more).

    I added a SEEK_END after the UIDL open (leaving it "append")
    and subsequent tests worked perfectly.  Will review all
    OPEN FOR APPEND operations, and perhaps even check the BC++
    source code to explain this.

o   Several minor bug fixes ... can't recall what but I did make
    quite a few!

o   GUI DLL update - text color for highlighted NEW entries.  What
    do you think? The only other color that really showed up well
    was WHITE, but I felt it important to differentiate between
    NEW and OLD entries, even when highlighted.


Changes included in v2.06
-------------------------

o   Minor bug fixes.  So minor I can't recall many.  For example,
    a small change to the DDE manager for passing URL's with embedded
    commas.  Also, removed the selective quoting threshold of 20
    characters.  Now, if ANYTHING is marked, that becomes the quoted
    material.

Changes included in v2.05
-------------------------

o   More minor bug fixes including fixes to default templates
    where the century "19" was hardcoded.

o   Save-and-don't send with forwarded messages from folders
    would crash.  Fixed.

o   Since AUTO LAUNCH VIEWER now actually does something when
    a MIME message part is defined this way, and since this was
    causing many questions at the new unexepected behaviour...

    The first time this version loads, all AUTO LAUNCH VIEWER
    settings maintained via Options->Settings->MIME, MIME
    Associations, have been turned OFF.  If you expect viewers
    to auto-launch, you'll have to go and turn them on where
    appropriate.

-   If you haven't been following the beta releases since v2.01,
    please read the rest of the release history below for versions
    since.


Changes included in v2.04 (beta)
--------------------------------
My plans are to release this as v2.05 quickly, so consider this
a short-term beta.

o   Y2K display issue in newsreader index files.  NEWS code was
    writing an old-style index entry, and the "index fixer" installed
    in v1.62 only fixed dates in the 1990's.  Fixed in both places.

o   Unfortunately, the purge-trash-by-age function didn't work
    correctly across the new year boundary.  Any messages deleted
    last year were removed from trash on 1/1 this year.  There are
    reports of trash working correctly, but I'm not sure how it
    could have.  Fixed and tested, ready for next year!  Sorry.
    Hopefully this doesn't inconvenience anyone.

o   Most work in this release was centered around the new settings
    flag on the advanced form.  A new "Multiplatform mode" is
    selectable and will be ON for new installs ... OFF for all
    existing installs.

    Selecting this mode tells MR/2 you wish to store settings and
    persistent data in a platform-independent manor.  Instead of
    reading/writing to mail.cfg, a new portable file will be
    created named mail.cfw.  This file will be maintainable by
    both MR/2 for OS/2 and for Windows, and any future platform
    supported.

    In addition, file-specific save info previously stored in EA's
    will be written out in a file-based manner.  For example, what
    was previously stored as an EA of the file mail\mr2i.ndx will
    be written to and maintained in a file named mail\MR2IFile.EAS
    in INI style, in a section called "[mr2i.ndx]".  All psuedo-EA's
    are housed in this single file in Multiplatform mode.

    ALSO note that PM Window-specific data, like size, position,
    colors, fonts, etc.,. will still be maintained in an OS/2 INI
    file.  Since window size and position and contexts are still
    fairly platform/device dependent, these will not be shared
    across platforms.

    *When you change this flag on the Settings->Advanced page,
    you will be prompted for confirmation, and then MR/2 will
    convert all known EA's and the config file  to the new
    platform-independent formats.

    *Changing the flag back to "unchecked" will also rewrite
    all settings USING OS/2-specific API's.  Note that the
    systems will then query these settings EXCEPT for the
    main configuration file.  Main configuration data is ALWAYS
    read FROM mail.cfw, if it exists.  Hence, it must be deleted
    in order for mail.cfg to be subsequently loaded. (Please keep
    the mail.cfg file around for a awhile even if depending on
    mail.cfw and multiplatform mode).


Changes included in v2.03 (beta)
--------------------------------

o   Filtering outgoing messages to folders no longer effects the
    "new" counter for that folder.

o   Marking multiple entries via mouse ("swiping") on any message
    index page used to constantly update the "number selected" count
    on each page.  This made swiping large blocks, and
    swiping-while-scrolling, very slow.  Changed so that the count
    is updated only when mouse button 1 is let up.

o   Auto Launch viewer in the MIME settings is now functional.  If,
    for example, you have "Auto Launch" checked for image/jpeg, and
    ave defined a viewer, and open a message with a JPG attached,
    the image should be displayed automatically.

    NOTE that my original plan called for keeping track of all the
    viewers loaded for each messages, and closing them WHEN the message
    was closed.  This may not be the desired behaviour.  So, instead of
    making it complex, it's extremely simple.  Viewers are lauched and
    forgotten, and the user gets to close them.  If this gets
    cumbersome, the option to turn off auto-launching is the ticket.

    Works, but it double-loads on occassion.  Certainly open for
    comments.

o   Viewers, when launched automatically OR on demand via RMB, are
    now loaded in the foreground.

o   Previous beta release extended the folder entries housed in
    mail\folders.ndx.  More fields are contained in each folder
    line as they get modified and rewritten.

o   FORWARDING a message now only includes original attachments ONCE.
    Although, it includes the attachments at the bottom of the included
    original.  I think these should be moved to the END of the new
    message, as if freshly attached.  Comments welcome, I'll probably
    change this.


Changes included in v2.02 (beta)
--------------------------------

o   Sped up (massively) the copy of message to large, open folders.

o   MIME header charset handling fixed.  Worked great *unless* sending
    or receiving a message with translatable characters in the header
    *and* an attachment.

o   News Index menu now has a Mark as->Refetchable option.  Probably
    not the best name for it.  What this does is first, deletes the
    article body if it exists, then marks the index entry as "header
    only".  This allows the body to be refetched.  Particularly
    useful when an article is marked as "has expired" and you want
    to retry.


Changes included in v2.01
-------------------------

o   Simple quick fix to remove expiration code.  An oversight
    in v2.0.  Code previous to this will warn in February,
    then simply cease to load in March of 2000.


Changes included in v2.0 (since v1.5) in Summary Form
-----------------------------------------------------
See the file PREHIST.TXT for a detailed log of changes made
through version 2.0 (this is the OLD "HISTORY.TXT" file).

o   Many, many bug fixes and smaller enhancements.

o   Speed improvements overall.  Massively faster index loads.
    Improvements center on file system and GUI operations.  Huge
    folders are now actually usable!  Also, some code to reduce
    the fragmenting of critical files, increasing performance
    further.  More to come ...

o   Configurable columns.  Not only can you adjust the column widths
    displayed for each message index page, but you can rearrange
    the order and even hide columns.  More advanced options include
    adding spacers between columns and controling the line drawn
    to separate columns.

o   Y2K compliance.  MR/2's message indices now handle 4 digit years.
    Older formatted index files are converted automatically.

o   REGEX pattern matching can now be used in filters.

o   Messages may be marked as PERMANENT and MR/2-sourced delete
    commands will skip these messages.  Of course, there's a way
    to unmark messages, too!

o   Mailto.exe revised.  There are now two new send-to-lists modes.
    Options to address each message INDIVIDUALLY to users, and another
    to keep the generic "To:" line but individualize each message
    with an "X-TO" header.

o   Remove from server now has an "after X days" option.  Only
    available in UIDL mode.

o   Multiple work-in-progress messages will now all recover after
    a system failure.

o   Automatic trash emptying option.  Can purge trash a specified
    number of days after being deleted.

o   Fetch my UIDL mode added.  In addition to working a little better
    than the "last count" method, has the potential for futher
    feature delevopment.

o   Reading from PACKED FOLDERS should be quicker after the first
    message is accessed.  The zip directory is cached for the
    last-accessed archive.

o   Selected counts at the bottom of each message index.

o   MIME handling improvements.


Changes included in version 1.5 (since v1.4)
--------------------------------------------

o   Multiple selections now available when attaching a file.  Click
    on as many file names (from the same directory) as you wish
    and attach them all with a single action

o   URL Editor allows user "fixing" of URL's before accessing them.

o   Options->Settings->Advanced now allows editing of ATTACHED
    directory default.  No checking for validity is performed (yet).

o   "Detach to path" is now a menu item on both the message viewer's
    MESSAGE menu and on the RMB menu for attachments.  Resulting
    form is much more simple than I originally intended.  Perhaps more
    to come later.  Up to 8 previously selected paths are remembered
    and the "default" button specifies and uses the default path.
    BETA.

o   Most pick lists are now font-drop sensitive and this information is
    saved and restored.  In addition, many pick lists now support
    KEY jumping.  Press "P" and the first entry starting with P is selected
    and displayed.  Press "PE" and anything starting with PE is selected.
    Press SPACEBAR to clear the key-pick buffer.

o   New reply-time variable: @RUN:command@.  This lets you run an
    external utility inline, as the reply file is being built.
    For example, comsider the following lines in a template:

       @Run:swapsig@
       $File:rotsig.txt

    When the @run@ command is "expanded", the command line is loaded to
    run "swapsig", which should be a rexx command.  In this example, I
    have assumed that swapsig.cmd REWRITES the file rotsig.txt every
    time it is invoked.

    I tested this this morning by having my rexx script write the
    date/time to a file, then dumping the contents of my environment
    ("set >filename") to the file.  The next line inserted this file
    into the reply.

    YOU DO NOT HAVE ACCESS TO THE SOURCE MESSAGE at this time, but I
    probably should fix this for consistency.  You do have almost all of
    the predefined environment variables set from source message.  Items
    like MR2I.FROM and MR2I.TO and MR2I.NEWSGROUPS are all set for
    easier parsing.

    Parameters can be passed after the command but before the closing @.

    Open for expansion of this idea.  Just a quicky, as it was about 20
    minutes of code.

o   Enhanced RMB menus for the inbox, outbox and folder indices.  The new
    SELECT sub menu has some functions inherited from News with some slight
    tweaks.  By request.

o   All RMB Select menus now have an "Invert selections" option.
    By request.

o   A new MIME viewer specifier has been added.  Placing a "#" (without
    the "'s) as the viewer for a MIME associations will produce a
    "can't view directly" message if anyone tries to RMB->View
    attachments of this type.  By request.

o   Message OPTIONS menu now has a "Show MIME parts" sub menu that allows
    you to collapse a MIME message to show only parts (text/plain is even
    shown as a detachable part), show ALL parts as text (possible that
    some intesting displays will result!) or to use the "default" mode
    as defined by user-configurable MIME associations.  By indirect
    request.

    This mode is persistent PER SESSION but is not saved to INI. I'm
    still debating whether or not to reset this for each message.  The
    current setup will work while this is debated.

o   The NAVIGATE menu has some additions.  It is now possible to move
    forwards and backwards to the "next" message with the same subject.
    These functions have also been mapped to the normal keyboard keys
    F for forward, B for backwards (active in the viewer only, the
    editor considers these typing keys :).

o   The functions Next and Previous Index Search Match (see the
    Navigate menu) have been assigned single key accelerators.  You
    may use I to move forwards, J to move backwards.

o   MR/2 now times-out more reliable.  Default is 90 seconds.

o   SMTP continuation line processing improved.

o   A new command line parameter (perhaps temporary) can control the
    tcp/ip READ timout.  Since the last version made MR/2 very
    sensitive to timeouts, users have reported that the default 90
    seconds is sometimes (rarely) not enough.  Use /Kseconds to
    override this.  For example:

        MR2I /K120

    Starts MR/2 with a 120 second (2 minute) timeout.  /K0 will
    turn timeout checking OFF and will cause MR/2 to work the "old"
    way.

o   {Z} Freeform filter specifier enhanced.  Previously, this was only
    good for testing the SIZE of the current message/article.  You may now
    add a header tag specifier.  Example:

        {Z:X-Spam-Factor}100

    equates to TRUE if the current header has a tag "X-Spam-Filter", and
    then if the data that immediately follows this tag can be evaluated
    as a number greater than or equal to 100.  By request.

o   Ooops.  Found another way that folder sort specifications could
    be lost.  Fixed.  Trash folder sort is now saved correctly.

o   Resending previously sent mail multiple times now works correctly.

o   Issues with initial focus and pre-selected items in list being
    in view have been addressed.

o   Beep is generated when text search is done and nothing is found.

o   Minor filtering inconsistencies fixed.  Obscure bug, low impact.

o   Mailto.exe now accepts an optional fourth parameter: return path:

        mailto filename toaddress smtpserver returnpath

    Where toaddress can be simply an "." which tells mailto to send
    to the TO address in the message.

    Same with the smtp serverparameter; if a "." is specified, the
    default is used (from the environment variable SMTP_HOST).

o   Memory leak fixed when linking to REXX.  A rather significant (3-6k)
    block of memory was allocated and never free'd each time REXX was
    called as a filter test, filter action or CTRL-Fkey invocation.
    Fixed.

o   "Mailto:" tags are removed from email addresses when tabbing out of
    fields.

o   Using +/- keys and all derivations now prevent recursion.  This was
    causing a crash when paging through packed folders.  The system will
    beep at you when a key is ignored, signifying it is "busy".

o   Formatted printing DATE in footer is now printed correctly.

o   Threw in a new @VARIABLE@ for replies and other templates.  Similar
    to @Headerinfo:Tag@, you may now use @DomainInfo:Tag@.  The header
    information matching TAG is extracted, and then the DOMAIN for that
    data is located and pulled out.  If no tag exists, an empty string
    results.  If no "@" is in the raw header data, the entire string
    results.  So, using one of my messages as a source when replying,
    the template variable @DomainInfo:From@ will result in "secant.com".



Changes included in version 1.2 (since v1.1)
--------------------------------------------

Please note that many of these features have been publicly available
for quite some time via "minor" maintenance release, they are listed
here for the benefit of those preferring to upgrade only for major
releases.

For a more detailed discussion of changes, see the file "history.txt"
in the distribution zip, and also available online via the MR/2 ICE
home page at http://nick.secant.com/mr2ice.htm.

o   POP3 manual mode can be specified.  In this mode, headers are
    fetched from the POP3 server but no bodies.  Index entries are
    inserted with a new icon.  The user can then pick and choose
    which full messages are fetched and when, if at all.

    This has been labeled "remote control" or "preview mode" in
    other mailers.

    A header-only entry in the index will show as a round "dot" icon.
    You can open this header for inspection, if desired, but the more
    common action would be to select one or more index "header only"
    entries and "fetch" again.  Marked entries will be retrieved in
    full.

o   PreFetch filters.  Filters that control the automated fetching
    of messages from the POP3 server.  Criteria can be defined based
    on a messages header.  If the criteria is matched, the user can
    specify to have MR/2 fetch the full message, just the header, or
    to skip the message entirely.

    There are two modes available.  When used in normal "non manual"
    mode, PreFetch filters can be used to specify message for which
    only the HEADERS are desired.  For example, messages from a
    certain user or over a specified size can be fetched in
    header-only mode, letting the user decide if/when to get the
    entire message.

o   User programmable Custom Mail Drivers.  Third parties can now
    create drivers that allow MR/2 ICE to read/send with non-POP/SMTP
    mail systems.  For example, a UUCP/UUPC driver set has already been
    created and made available to the public.

o   UUPC/UUCP interface via the custom driver interface mentioned
    above.  Available as a ftp'able add on, see the MR/2 ICE home
    page for a direct ftp link (see MR/2 ICE's HELP menu).

o   Fax-by-email support!!  MR/2 ICE now supports the transport of faxes
    and other FaxWork Pro and PMFax-related documents via email, with
    the potential to save fortunes in long distance phone calls!  This
    feature will cooperate with release v3.0++ of FaxWorks Pro.

o   MR/2 ICE Ask-The-Experts(tm) Web Page!  Yet another way to get
    user-based help for what's already the best-supported OS/2 email
    available!  Simple web interface accepts and email address and
    question(s) from the user.  This is then emailed to a panel of MR/2
    ICE veteran users that have volunteered to share their knowledge.

o   MR/2 HELP menus now have links to various MR/2 web pages, including
    the home page, the FAQ and the Ask-The-Experts(tm) page.  An online
    web-based manual with SEARCH capabilites should be available soon

o   The MIME subsystem now calls upon WPS Associations when viewing an
    attachment.  If a viewer is not defined within MR/2 ICE, the
    attachment is treated as an "object" and opened via WPS calls.

    This feature is implemented via a new DLL.  So as not to leave the
    existing OS/2 v2.x user base without updates, a special DLL is
    provided that allows use under v2.x, less the WPS integration.

o   Demand filters added.  Filters meant to be called manually by
    the user against selected messages.

o   Messages may be "redirected" to other users without notably marking
    the message as a forward.  (AKA "bouncing").

o   Improvements to the split-screen editor and copying/quoting
    between windows.  Pasting w/quote can be performed with a single
    click or keystroke.

o   Performance of Copying/Moving to folders vastly improved.

o   More documentation!  Install.txt, keys.txt and readme.1st.  The
    Readme.1st file describes all documentation files.  The file
    INSTALL.TXT is loaded into the E editor for reference on the very
    first invocation of MR/2.

o   Overall performance increases:  SMTP interface, Unique file generator,
    Reindexing of an index,

o   Improved subsystems:  Forwarding, MIME, Multiple account logins.

o   Some minor attempts to improve workings on DBCS systems.

o   Much more in the way of fixes and improvements.


What's New in Version 1.1 (since v1.0)
--------------------------------------

o   MIME support.  Both incoming and outgoing attachments including
    support for configurable MIME associations, allowing you to control
    each MIME type.  Declare a MIME part as "visible text" or define an
    external viewer for it.

o   Improved attachment processor.  Attachments are handled faster and
    with much more flexibility.  Files can be dropped on the message
    editor to add them as an attachment.  RMB over an attachment allows
    it to be individually detached and/or "viewed".

o   Support for ISO-8859-10 and KOI8-R Russian character sets.  Previous
    releases already included support for ISO-8859-1 through ISO-8859-9
    and US-ASCII.  MR/2 ICE now supports 47 code pages / character sets.

o   Improved hooks for PGP and other external utilities.  MR/2 ICE can
    now be made fully PGP capable with the help of some wonderful third
    party tools.  These tools include a PM based PGP front end and/or
    several REXX scripts ... mix and match, providing the most flexible
    solution possible.  See the MR/2 ICE home page for more information
    about the third-party PGP tools.

o   Many more configuration options for MIME character sets.  See
    Options->Settings->Advanced.

o   Improved spelling checker and thesaurus.

o   MR/2 ICE "server" options have been added that allow MR/2 to be
    controlled from other programs.  For example, use MR/2 ICE as your
    SMTP interface for SLNR.  Add message files to MR/2 ICE's outbox
    from any application.  Invoke a "new message" from any application.
    Works with a running copy of MR/2 or a freshly loaded copy.

o   Third party tool support - MR/2 ICE is the default external mailer
    for the new Black Book v1.0.  See the MR/2 ICE web page for links.

o   Improved POP3 server message reporting.

o   Improved REXX interfaces, both "on demand" and filter interaction.
    Have the REXX session loaded in the background, or in the foreground
    allowing user interaction.  PreSend filters added that allow
    modification to any message just before it is sent.

o   Any external modifications to a message cause the message index to
    be updated to reflect these changes.  In other words, editing a
    message's SUBJECT data using Tools->Edit Externally or the REXX
    interface will force the index to be updated, as well.

o   Outbound Filters enabled and enhanced.

o   Multiple copies of external editors and other utilities no
    longer causes problems.

o   Dozens of smaller bug fixes and enhancements.  More detail?  See
    the file "history.txt" in the distribution ZIP file.

