User Tools

Site Tools


whats_new_112

Mystic BBS v1.12 - What's New

Every Mystic BBS archive contains a WHATSNEW.TXT file that tracks the development of Mystic BBS for the version related to that archive.

This page contains notes from the author (g00r00) during the development of Mystic BBS v1.12. It outlines what is a new or changed feature, a bug fix, or something that has been removed.

In order to interpret each entry below, the following key explains the nature of each change that has been noted in the WHATSNEW.TXT for this version of Mystic BBS.

! = Bug fix
+ = New or changed feature
- = Removed

Use the Table of Contents on the right hand side of this page to quickly jump between the notes that relate to each Alpha version of Mystic BBS during this development cycle.

If you spot something you think looks amiss with these notes please contact us using the contact info found on this Wiki.
























1.12 Alpha 1

 ! Mystic now clears the temporary directory after each mass uploaded file,
   just in case a second .DIZ is in an archive.

 + The FS editor DRAW mode now has an Upload ANSI option added to the menu.

 ! Fixed a small bug when ANSI was posted into a NON-ANSI base that could
   cause the converted ASCII to get distorted.

 + When generating quote data, Mystic will no longer wrap the first line into
   the second line if the line is a KLUDGE line.

 + New MUTIL option for [ExportEchomail] entitled "skip_online". If this value
   is set to true, Mystic will not toss new messages posted by them if they
   are currently logged into the BBS.  Combined with "create semaphores at
   logout", this should give users their entire time logged in to edit their
   messages before they'll be sent, even if other users create semaphores.

 ! I accidentally compiled Mystic with a 1000 line message limit.  It has been
   changed to 10,000 lines per message now.

 + Mystic now fully supports unlimited reply tracking, using reply first,
   reply next, and reply to for each message.  This carries over to the
   echomail linking and message base purging/packing as well.

 ! Fixed a bug which could cause NodeSpy's snooping sessions to abruptly end
   in Windows.

 + The CL mci code (clear screen) and any other function based clear screens
   done by Mystic will now send ESC[H to home the cursor before the 2J for
   better compatibility with non ANSI-BBS terminals.

 + Mystic now has internal Xmodem (1K/CRC), Ymodem, Ymodem-G to go along with
   the existing Zmodem protocol.  Similarly to Zmodem, they are configured
   in the protocol editor with the following send/receive commands:

      @xmodem
      @ymodem
      @ymodemg

   A new protocol.dat has been included with the default installation that
   has these new protocols added, so it can be copied over the old
   protocol.dat if you haven't made changes specific to your system.

 + Increased the speed of statistic calculation in Nodespy significantly.

 + Character input within the configuration editors now allows characters
   to be input by the ASCII number or the key itself.

 + Revamped the Login/Matrix settings in the configuration, moving some
   options that were in General that probably made more sense in Login
   options.

 + Mystic can now send client terminals either CP437 or UTF8 data output,
   converting relevant outbound data to UTF8 when selected.  For compatibility
   reasons, data still has to be stored in CP437 encoding within Mystic itself

 + Mystic now has two new options in the Login configuration which go along
   with the UTF8 encoding:

   Default CodePage
   Ask CodePage

   ** READ THIS:
   If you do not understand what these are, set Default to CP437 and
   Ask CodePage to "Detect".  What this basically does is allows users to use
   things like Putty to connect to your BBS, and everything should look and
   work as expected.

   When Mystic starts up, by default a user will have the configured "Default"
   code page.  Then depending on the setting of "Ask CodePage", Mystic will do
   one of the following:

      Detect : Mystic only changes codepage from default if it is able
               to detect a terminal that is likely NOT the default, but the
               user is never prompted.
      Ask    : Mystic will ask the user which Codepage they would like
               to use after detecting ANSI.
      CP437  : Codepage will always be set to MS-DOS (CP437)
      UTF8   : Codepage will always be set to UTF8

   In Linux, the Default code page will actually be what Mystic runs in
   when you run mystic from the command line, too.  In Windows, the Sysop
   side will always execute in CP437, even when a user is logged in that
   has UTF8 enabled (the user of course will still get sent UTF8).

   One other consideration, is that many terminals that use UTF8 are using
   VT102 instead of ANSI-BBS, which means a few things are different - most
   noticably are ANSI clear screen codes.  In ANSI-BBS, the clear screen also
   moves the cursor to 1,1, while in VT102 it does not.  This means its best
   to edit your ANSIs and add a |CL at the very top so Mystic clears the
   screen in a compatible way.

 + When a user selects UTF8 encoding, Mystic will now assume their terminal
   sends VT102 DELETE/BACKSPACE keys rather than the MS-DOS terminal behavior.

 + MUTIL now has a function called to pack and check integrity of file bases,
   and a new header in MUTIL called [PackFileBases] has been added.  Please
   see the default MUTIL.INI in the new installation for more information.

   The old broken filepack in MBBSUTIL is gone now.

 + Mystic now prompts for confirmation when using the (U)pdate DIZ command
   from the file directory listing, to lessen the change that a SysOp injects
   a new .DIZ into an archive without meaning to.

 + New options for the GD "Display a file" menu command.  The old optional
   data where just the filename is supplied continues to work, but now if
   the first character is @ it will expect a few options in the following
   format:

      Format #1: filename
      Format #2: @baudrate@true/false/end@filename

   The @baudrate field specifies the baud rate to display the file.

   The second field defines how file pauses should work.  If set to TRUE
   the file will pause.  If set to false it will not pause.  If set to END
   then it will only pause after displaying the file.

   The final @filename is just the same as the format #1

   For example:
     @38400@end@bogacid1.ans

   The above would display JEDs 250kb ANSImation at 38400 baud, with no
   pauses except for one at the end.

 + New option in Login/Matrix settings: "Login after Apply".  If set to Yes
   Mystic will automatically send the user to the login after they apply for
   a new account through the Matrix.

 + PYTHON is here!  New menu command 'GY' will execute a Python 2.7 syntax
   script.  By default Mystic looks in the script directory for .MPY files,
   using the same logic as MPX.  If you supply a file with no extention,
   Mystic will add .mpy onto it.  If you do not supply a path, then Mystic
   will look in the current theme's script directory, and then the default
   script directory if fallback is enabled.

      Example:

         Command: GY
            Data: testpython

      The above executes testpython.mpy from the Scripts directory

      Example:

         Command: GY
            Data: c:\mystic\derp\herpderp

      The above executes herderp.mpy from the c:\mystic\derp directory, or
      if it is not found and fallback is enabled for the current theme, Mystic
      will look in the default scripts directory.

 + MUTIL now doesn't completely crap out if it does not have access to the
   files it needs on startup in Linux.

 + Mystic is now compiled with FPC 3.0.0 in Windows and Linux!

 ! The /TO: option when posting a new message in a public base was still
   presenting the TO field.

   <ALPHA 1.12 A1 RELEASED -- Feb 9, 2016>

1.12 Alpha 2

 ! Mystic will not crash when skip_online is set to false during echomail
   tossing.

 ! Added the forgotten prompt 315 to the default prompts

 + Moved the Python intialization code to only execute the first time a
   script is ran, so that if Python is incorrectly installed it will not
   prevent Mystic from loading with an error.

   If you get a "Import error: no module named site" when you DO try to
   execute a Python script, its because you have Python on your system but
   it is not completely installed.  You'll need to set your environment
   variables.  For example if you have Python installed in C:\Python27:

     SET PYTHONHOME=C:\PYTHON27
     SET PYTHONPATH=C:\PYTHON27\LIB
     SET PATH=%PYTHONHOME%;%PATH%

 - Removed the -FCHECK command from MBBSUTIL since MUTIL's file pack
   function now covers the same stuff while it packs bases.

 - Squish message bases have now been removed.  They were never used and
   supporting two aging standards was a waste of time, and annoying.  Now
   that its gone, expect additional polish on the JAM side.

 + MUTIL now has a new function [LinkMessages].  This scours your echomail
   bases and creates reply links between messages.  See MUTIL.INI for more
   details and options (I may be rewriting the msgbase packer too)

 + Message header prompts and display files now have a &A display code
   which returns the "Reply Next" field.

 + A2 will be compiled with increased compiler optimizations to see if
   there are any negative effects.

 + Prompts beginning with a # will now execute a Python script similar to
   MPL and display files:

      @myansi     <- Shows myansi from your theme's text dir
      !mympl      <- Execute mympl.mpx from theme's script dir
      #mypython   <- Execute mypython.mpy from theme's script dir

   In the small case that you ever need to start a prompt with one of
   these characters, you can prefix it with the "dummy" MCI code <pipe>XX

 + DOCS section now has a fully updated mci_display_codes.txt with all
   current codes documented!

 + Mystic now shows a "there are no files in this base" message when a user
   lists files in a base which HAS files, but none that are accessible to
   them.

   <ALPHA 1.12 A2 RELEASED -- Feb 11, 2016>

1.12 Alpha 3

 + Mystic's menus now generate unique IDs for each menu item, rather than
   referencing by the record order.  This makes using Grid menus MUCH more
   feasible.  When they are loaded and saved for the first time in the menu
   editor they will automatically "upgrade" themselves, so there is no need
   for conversion.

 + Mystic's message reader and FS editor can now handle WWIV, Synchronet,
   PCBoard, Wildcat color codes in addition to the already supported pipe
   and full blown ANSI.

 + Increased max menu items to 99 per menu with 25 commands per item.

 + The Theme editor now has an option to edit menus within the theme. This
   is just an alternative place to find the menu editor.

 + Changed /F Flags inside the menu editor to less confusing /S Settings

 + File base configurations now have a Hatch ACS value to determine who has
   the ability to hatch files from that file base.

 + Message base editor now warns you if you set a QWK network for a message
   base, but then do not set the conference ID.

 + Significantly increased JAM lastread performance on systems with more
   than 100 users.

 + MUTIL msgpack now handles JAM's ReplyNext field when packing.

 + Last read pointers are now stored by the user's permanent index.

 + acs_comment field in MUTIL FILEBONE and FILETOSS have changed to acs_hatch
   so update your .INI files if you use these and want to set hatch ACS in
   those situations.

 + When receiving a node message you can now request to chat with the person
   who sent the message.  Updated prompt 145.  Note the first two characters
   are the characters used in the prompt followed by a space and then the
   text:

      ; Message from another node footer. First word contains input keys, followed by prompt
      145 RC |CR|09Node Message: |01[|10R|01]|09eply, |01[|10C|01]|09hat, or |01[|10ENTER|01/|10Continue|01]|09: |15

 + When editing message text, Mystic will now not resolve color codes so they
   are not lost when converting from ANSI to ASCII stripping colors.  This
   should fix up losing the colors in your signautures if you edit messages

 + Reworked Protocol configuration.  There no longer needs to be a Protocol
   entry for both a Batch and non-batch version of a protocol.  Instead the
   Batch flag specifies if it is a batch protocol or not.  New PROTOCOL.DAT

 + Uploading a message to the FS editor no longer annoyingly asks for a
   filename, unless a Protocol is selected that would require it, or you are
   uploading a file from the local disk.

 + Reworked the file upload function so that it never asks for filenames
   unless it absolutely has to.  The transfer protocol is now the first
   question if a default is not set, followed by the filenames if needed.
   Gone is the display file BLINDUL. Gone is "Blind Upload?" prompt #375

 + Mystic now prompts for ENTER just before a transfer begins, and allows
   an option to abort here.  This was done to give users an option to abort
   if they have a default protocol set.  Replace the old prompt with the
   new one:

      ; Press ENTER to start file transfer  &1=selected protocol
      ; First word is input chars, followed by display text
      065 SQ |CR|09Press |01[|15ENTER|01/|15S|01]|09tart or |01[|15ESCAPE|01/|15Q|01]|09uit your |15|&1 |09transfer: |XX

 + The Upload Base settings in the File Base Settings now uses the File
   base permanent index instead of the record position.  If you use this
   setting you should double check that yours is correct after upgrading.

 + Message and File groups now have unique identifiers associated to them.

 + Mystic's lightbar menus now automatically work with mouse input when
   using a compatible terminal

 + All configuration editors now list everything by unique ID instead of
   record position

 + Cleaned up the remote mouse support in the system configuration so it
   should work much better now in the main pulldown menu.

 + Added a new record-size aware and automatically buffered file I/O class to
   MPL with the following functions:

     FileOpen
     FileEOF
     FileRead
     FileSeek
     FilePos
     FileSize
     FileWrite
     FileWriteBlock
     FileRead
     FileReadBlock
     FileClose

 + Compiled MPL programs greater than 16KB should now run faster, while
   smaller MPL programs should use less memory.

 + When passing -X to execute MPL from command line, Mystic will now longer
   replace _ with spaces in the filenames.  Instead it is expected that you
   use quotations around the arguement if it has spaces.

 + MPL now allows embedded records!!!  For example:

     Type
       Record1 = Record
         A : Byte;
       End;

     Type
       Record2 = Record
         A : Record1;
       End;

     Var
       Test : Record2;
     Begin
       Test.A.A := 10;
     End.

 ! Fixed a small memory leak in the echomail tosser

 + MUTIL now logs the time each process takes to complete which is logged and
   displayed on the screen.

 + Rewrote the message reply linking now that Squish is gone, and it should be
   up to 50% faster now.  Removed the "quick_link" option which at least for
   now (it is now always on).

 ! Fixed a bug with the message base packer that was preventing it from
   properly adjusting the reply linking when renumbering message bases

 + Mystic now uses JAM's third reply field (ReplyTo, ReplyFirst, ReplyNext)
   in all areas of the BBS and its utilities.

 + File base file listings now generate CRC64 signatures that are used for
   increased speed during file duplication scans.  These are stored in .DFX
   files, one for each entry in the file listing.

 + MUTIL mass upload now supports @TEXTDIZ during mass uploads, which is a
   feature of Mystic that can extract embedded @BEGIN_FILE_ID_DIZ tags from
   text files and use them as the file description.  Previously this only
   worked from user uploads to the BBS or the online mass upload.

 + Mystic's online .DIZ processor during uploads and mass upload can now
   parse PCBoard, Wildcat, and WWIV color codes in .DIZ files in addition to
   the already supported PIPE and ANSI.

 + MUTIL's mass upload can now handle .DIZ files with embedded ANSI, PIPE,
   PCBoard, WildCat, and WWIV color codes.  Mystic will translate them into
   ASCII and then apply colors to it using pipe codes, then save it so that
   it shows as intended, but can easily be stripped of color when needed.

 + Rewrote MUTILS mass upload logic so that it is literally thousands of
   times faster than it used to be while doing even more than it was.  Check
   out these differences in speed, its pretty crazy:

      BEFORE: Mass Upload Files    Uploaded 10000 file(s)    DONE 364.29s
       AFTER: Mass Upload Files    Uploaded 10729 file(s)    DONE 0.45s
       AFTER: Mass Upload Files    Uploaded 10729 file(s)    DONE 11.73s

   The first "AFTER" was with .DIZ importing turned off the second was with
   full DIZ importing.  729 files most of which had .DIZ files and then
   10,000 small text files that were scanned for @BEGIN_FILE_ID.DIZ tags and
   the total was 11.73 seconds, an improvement of 352.56 seconds!  Adding one
   file into a database of 10s of thousands took 8/100th of a second!

 + Files uploaded by FTP will now import DIZ descriptions into the BBS using
   ANSI, Pipe, Wildcat, PCBoard, or WWIV colors, like other areas of the BBS

 + Significantly increased the speed of duplicate file searches in Mystic,
   MUTIL (mass upload, TIC processing), and the FTP server.

 + TIC importing can now handle .DIZ files with ANSI, pipe, etc and even
   embedded @BEGIN_FILE_ID.DIZ tags like everything else can now.

 ! Fixed a bug that could make the cursor go a little weird when pressing
   the HOME key at the end of the lightbar file lists.

   <ALPHA 1.12 A3 RELEASED -- Feb 18, 2016>

1.12 Alpha 4

 ! Fixed a small memory leak that could occur when an invalid echomail link
   sneaks into the datafiles.

 + More general performance increases centered around file I/O.

 + Pressing enter on the OTHER tab in CFG would cause a crash in A3.

 + MUTIL now properly merges and regenerates SEEN-BY and PATH kludges with
   proper sorting of SEEN-BY when Mystic is hubbing echomail to downlinks.

 ! Fixed a bug with MUTIL netmail routing when Mystic is hubbing a network

 ! Adding new groups was not correctly assigning an incremented group ID.
   If you have groups created in A3 you'll have to recreate them if it
   have the same ID as another group.

 ! Fixed missing From/To/Subj info in the message reader that I broke in A3

   <ALPHA 1.12 A4 RELEASED -- Feb 20, 2016>

1.12 Alpha 5

 + MUTIL now removes duplicate SEEN-BY information when tossing messages

 + The GD (display a file) command can now have a " /NEW" appended on the
   end of the command data, which if found, will only display the file if
   its file date is more recent than the user's last login.

 ! Fixed .DIZ importing during online upload and online mass upload that I
   broke when redoing the batch uploads.

 ! Deleting HISTORY.DAT will now also reset the system callers number when
   Mystic attempts to update the history for the first time.

 + You can now move between prompts using up/down keys while simulating
   prompts in the theme editor.

 ! Fixed a bug which could cause the node to lock up in Linux when using
   DI baud emulation codes.

 ! Fixed weirdness in ignore functions from MUTIL mass upload introduced
   in the last alpha.

 + Added a ton of debug logging to MUTIL mass upload since its a rewrite
   so turn loglevel 3 on if you have any problems and send me the results

 + Selecting the hotkey in the menu editor from the list (CTRL+L) now gives
   a brief description of some of the preset hotkey values

 + Minor visual clean ups in the System Configuration that no one will notice
   except for my OCD.

 + The System Configuration now has a General Settings > Config Theme option
   which switches between the Default configuration theme we're all used to or
   a Custom theme.  For now the colors of the custom theme are not
   configurable but some reasonable defaults are in place in the meantime.

 ! Added a "never delete" flag into the User editor which prevents users from
   ever being deleted by a user packer/purger.  This has always been a feature
   but it was mistakenly missing from the user editor.

 + New user flag option "Force password change" will force the user to change
   their password on their next login to the BBS.

   <ALPHA 1.12 A5 RELEASED -- Feb 24, 2016>

1.12 Alpha 6

 + Mystic's NNTP server now properly auto reformats free flowing lines when
   long messages are posted.

 ! When uploading a message that doesn't contain any content, Mystic was
   sometimes confusing the current line being edited in the FS editor

 + NNTP server no longer logs passwords even with the highest log setting

 + NNTP server now adds TZUTC kludges to echomail posted via newsgroup
   readers.

 ! Fixed lots of issues with FTP upload introduced recently.  FTP uploads
   were not using the base ID to find the file base, and the .DIZ importing
   was broken.  Everything should be back to normal now (hopefully) but I
   will be doing more testing in the future.

 + If the SIZE field is missing from a TIC file, Mystic will now calculate
   the file size by looking at the actual file received.

 + Enabled verbose FTP server logging, similar to NNTP server.  These will
   both be loglevel 3 logs when I switch over to the log rollers soon.

 ! Users marked for deletion that were not yet physically removed were still
   showing up in the user listing.

 + The FTP server now allows files to be deleted via FTP from Mystic's file
   bases, if the logged in user meets the Sysop ACS requirements for that
   base.

 ! Fixed a small memory leak in MIS's server status window.

 + Mystic will now add a DUPE kludge to messages when moving to the bad
   message base using the following format:

     @DUPE <Areatag> <PKT origin> <PKT dest>

 + Added a new Archive viewing system.  This will create a virtual disk space
   of an archive, and allow you to nagivate the archived files, directories
   and even any number of archives within the archive itself.

   You can download and view files from anywhere, even when in an archive
   inside of an archive inside of an archive, etc.  The usual cursor movement
   functions are available, along with remote mouse support and on the fly
   text searching by simply typing.

   Two new files go along with this using the new(er) template format:

     archive_view.ans - Contains the ANSI of the browser UI
     archive_view.ini - Contains all of the prompts and configuration options

   For the moment ZIP, RAR, LZH, and LHA are supported but I am looking into
   additional formats.  For now I think I've covered the most common/needed.

 + Message base global editor now allows you to specify the ANSI flag

 + Minor cosmetic things to MUTIL to expand the status field and add commas

 + Mystic's MUTIL will now refuse to save duplicate messages when tossing
   echomail if the configured dupe message base is not a local type base.

   <ALPHA 1.12 A6 RELEASED -- Mar 1, 2016>
   

1.12 Alpha 7

 + The Echomail Nodes editor now has functions to /Copy /Paste and /Move
   entries.

 + When using the /Exports editor in the Echomail node configuration, you
   can now add new exports in bulk, by tagging any number of message bases.

 + Mystic now strips leading and trailing spaces from PKT AREA tags just in
   case a poorly formatted message is received with AutoCreate enabled.

 + When simulating prompts in the Prompt editor, Mystic will now show the
   PromptInfo codes in their formatted place

 + Added some new permanent debug logging to Message Purging function

 + Mystic's message packer no longer recalculates the "date arrived" field
   when packing bases.  Some 3rd party stat tools use this and not the date
   the message was written for stat generation, and this could throw off its
   reporting from date ranges.

 ! Fixed ANSI gallery crash in Linux 64-bit version

 ! Fixed broken ANSI display baud emulation in 64-bit Linux version

 ! Fixed quirkiness causing Pi version to sometimes crash on login.

   <ALPHA 1.12 A7 RELEASED -- Mar 11, 2016>
   

1.12 Alpha 8

 ! Fixed Pi crashing in A7 on login from MIS

 + Cleaned up the BINKP server authentication logging to be a little more
   clear when describing what its doing.  It should be much easier to
   understand even with full debug logging on.

 ! (Hopefully) fixed issues with Shell, BBS events not honoring the day of
   the week during execution. Reduced the resources used by the event system

 ! User editor was not properly saving the "Never delete" flag

 + Added "getuser" and "onekey" functions into Python and updated the
   testpython.mpy in the default install.  This will continue to be updated
   as new functions and features are added and I need to test them.

 + New menu command *T opens the theme editor

 - Removed all door menu commands except for DD and D3.  The old ones will
   continue to work for now, but there are only 2 commands (DD and D3) to
   execute a DOS or Door32 door.  Mystic creates all drop files now for any
   door execution.

 + %0 now gives the socket handle on door command lines in Linux (like it does
   already in Windows)

 ! Deleting file bases using the file base editor was not properly deleting
   the data files when selected to do so.

 + File Base editor now has a /Reset command similar to the Message Base
   editor that will reset the file listings in the base, while maintaining
   all of the other important details (user scan settings, echo exports).

 ! Fixed a problem with duplicate file searching in Linux, but *everyone*
   should make sure they run the MUTIL file base packer so Mystic can
   regenerate indexes for their file listings.

 + Lots of UTF8 cleanups.  Mystic now has a Local CodePage option which is
   used as the default when the -L command is used (local login).  This
   allows separate defaults local console vs an incoming caller.

 + UTF8 was not working in -CFG mode. It now uses the local codepage.

 + INSTALL program for OSX now defaults to using UTF8 and no longer bleeds
   screen data after viewing update/whatsnew.

 + ReWrote the group changing code.  Calculation of the number of bases per
   group should be much faster now.

 + MUTIL will now honor the local codepage and run in UTF8 in Linux/OSX

 + MIS will now honor the local codepage and run in UTF8 in Linux/OSX

 + NODESPY will now honor the local codepage and run in UTF8 in Linux/OSX

 ! Fixed kludge lines bleeding into ANSI in some ANSI message posts

 ! Fixed a bug sometimes causing OSX to error with "Cannot find MYSTIC.DAT"

 + FILES.BBS importer now has a few new options to help speed things up as
   well as support more variations in formats.  See Wiki or MUTIL.ini for more

 ! The uploader name would show the date in listings when a file had zero
   lines of description (a situation Mystic itself cannot create)

 ! After tossing nearly 3 million echomail messages, I think I finally found
   a bad memory reference which I hope could be the cause of some strangeness
   seen by one or two systems over the past year or so.  Fixed either way.

 + Local Codepage now defaults to UTF8 in OSX (OSX defaults to UTF8)

 + INSTALL will now exit if the any of the directories already exist instead
   of letting you reinstall over.  Sorry for those who like this option I
   will probably as a Yes/No at a later date.

 + Local Codepage now defaults to UTF8 for Pi (Jessie defaults to UTF8)

 + NodeSpy terminal now also supports CTRL+I and CTRL+D to delete after I
   realized that Apple keyboard have no INSERT key.  Apple is so weird...

 ! Some fixes for screen artifacts in OSX and Pi, things look very pretty
   and although no one uses it, the OSX version is really coming along!

   <ALPHA 1.12 A8 RELEASED -- Mar 25, 2016>
   

1.12 Alpha 9

 + Rewrote the online Mass Upload which should have some minor speed
   improvements when adding a large amount of files but its still no where
   near as fast as MUTIL (at the cost of using WAY less memory).

 ! Fixed another bug in the MUTIL massupload in Linux which was causing it
   to generate file indexes for Windows system (case insensitive) and would
   result in creating duplicate file list entries.

 ! Fixed a bug with placing Netmail messages in the wrong Netmail base that
   was introduced in A8.  This did not break netmail just made things weird.

 + Mystic Windows now disables the "X" close button in the Window so you can't
   force close Mystic and create ghost users.  Should have done this years ago!

 + MUTIL now has a second type of log rolling.  While the existing type rolls
   by file size, logs can now also roll by day.  Daily logs will have a date
   stamp appended to them, for example "mutil.20160329.log" and after a certain
   number of days, the oldest file will be erased.

 ! Fixed a bug in the new ZIP viewer code which would cause crashes while
   viewing certain ZIP files or during uploads when importing FILE_ID.DIZ

 + An "id" option can be set in NodeSpy's general stanza which will append
   onto the Window title when running.  For example, if:

     [General]
       id = My BBS

   Then the Window titles will have the ID appended, such as:

      "NodeSpy/Main (My BBS)"

 ! Fixed a NNTP lockup bug that I introduced in an earlier alpha

 + NNTP server now will trim blank lines off of the beginning of the message
   instead of just the end.

 ! (Hopefully) fixed file searching crashes in Windows XP.

 <ALPHA 1.12 A9 RELEASED -- Mar 30, 2016>

1.12 Alpha 10

 + Added three new menu commands for creating and evaluating semaphores
   from within the menu system.  @NODE can be replaced with the node number if
   desired.  See Wiki for more info:

      !C - Creates the semaphore filename in optional data
      !D - Delete the semaphore filename in optional data if it exists
      !E - Check if semaphore filename exists and set result in "OK" ACS.

 + When copying a message from one base to another, Mystic will rebrand the
   message using the real name if the destination has the real name flag.  In
   order words, if a user posts to AGN_BBS on AgoraNet and then copies that
   message to BBS_CARNIVAL on FidoNet, Mystic will strip and regenerate all
   kludges and origins as it were posted to FidoNet.  It already did that, but
   now it will also change the From name to the user's real name when it can.

 ! After uploading a message, Mystic's user action would still be set to
   "Transfering files".  Fixed.

 ! Fixed a potential exploit added in the 1.12 alphas earlier.  TO BE VERY
   CLEAR it is not an exploit that would compromise any data, just one that
   could be used to cause a corruption in data files.  Please upgrade
   immediately if you're using a 1.12 Alpha prior to A10.

 ! Fixed a problem with uploads related to xfer.log

 + New command line option for Mystic -CP<mode> to override the default code page
   for that session.  IE: ./mystic -CPutf8 will force UTF8 default output
   regardless of the default setting.  Any -CP that does not contain UTF will
   cause Mystic to default to CP437

 <ALPHA 1.12 A10 RELEASED -- April 4, 2016>

1.12 Alpha 11

 + Mystic now has an option to add [ANSI] prefix to message subjects of ANSI
   messages, found in the Message Base Settings.  This can be set to off, on,
   or echomail only.

 + Mystic will now strip all [ANSI] tags and RE: prefixes prior to replying
   to a message, and recalculate/re-add them as required when saving the
   reply message.  That means if you reply to a message with an ANSI tag but
   the reply contains no ANSI, the [ANSI] tag will be removed from the subject

 + Mystic now has a new option in Message Base Settings: "Add Re: Prefix"
   when on will add "Re:" to the subjects of replies (as Mystic always has) or
   when off it will strip Re: and not add.

 ! Netmail and private message bases will no longer be listed and readable
   in the NNTP server even if the SysOp configures it show up via NNTP.

 + New command line option for the "mystic" binary: -PATHS.  This will open
   Mystic's "System Directory" configuration so that the root paths can more
   easily be changed when copying Mystic between operating systems such as
   Windows to OSX, etc.

 + QWK Path is is now also listed in the System Directories configuration

 + New message scans should now be much more efficient when updating last
   read pointers.

 <ALPHA 1.12 A11 RELEASED -- April 18, 2016>

1.12 Alpha 12

 ! Fixed an issue that would cause file scans to fail if the data files for
   the first file base were missing.

 ! In Windows, SysOp macros are now executed by pressing CTRL+F1-F8 keys,
   because the F1-F8 keys are now used in the ANSI editor, etc.

 ! Some cleanups to the ANSI message uploaded, when uploading multiple ANSI
   files into the message editor.

 ! Fixed a bug with downloads when trying to download during a file scan or
   search.

 + Extended the amount of time Zmodem receive gives to start uploading from
   30 seconds to 90 seconds.

 + Zmodem no longer retries to send the ZFIN header while waiting for the
   OO marker at the end of a transfer session, for quicker ending of
   transfers for implementations that appear to not send OO (SyncTerm).

 + Adjusted Zmodem timings in certain places to allow for more time for
   users to respond to things like Overwrite prompts before timing out.

 <ALPHA 1.12 A12 RELEASED -- April 28, 2016>

1.12 Alpha 13

 ! Fixed remaining known issues relating to new file listing indexing which
   should in turn fix any strangeness experienced with tagging and
   downloading files.

 <ALPHA 1.12 A13 RELEASED -- May 3, 2016>

1.12 Alpha 14

 ! Fixed problem in socket functions when output buffers were filled that
   could cause loss of data during Zmodem, FTP, and BINKP transfers.

 + Improved reliability of ANSI detection in Windows

 + Added a keypressed function to Python engine

 + Added a bit more error logging during echomail exporting in some cases

 ! Found some debug stuff in the display file function which was causing
   Mystic to do a lot more work than it should have been doing.

 ! Fixed an issue in lightbar/grid style menus when doing key jumps with the
   new menu command IDs.

 <ALPHA 1.12 A14 RELEASED -- May 15, 2016>

1.12 Alpha 15

 + Pressing backspace as the first key while editing a field in the
   configuration editors will now automatically erase the entire input data.

   Let me know if you do not like this change.

 + Pressing ESCAPE during string input within the configuration editors will
   now restore the default string and exit the input.

 ! Fixed an obscure bug in the menu system that is hard to explain and that
   no one would ever likely find! :)

 + Added a little more debug logging to echomail processing, but this is
   probably temporary.

 + Mystic now prints a message if Python is executed when it is not detected
   on the system.

 + Mystic now prints a message if Python fails to initialize when executing
   Python.

 + Mystic's echomail export function will now check the configured echomail
   domain of the message base, and the domain of the destination address. If
   the domains do not match, Mystic will log and refuse to export the message

 + Mystic will now refuse to let you edit a user in MCFG's user editor if
   the user is currently logged into the BBS.  This capability is on the TODO

 + Mystic now immediately updates the online username as soon as they log in
   as opposed to waiting until the first menu.

 + New menu command -B will break the current menu execution chain, when using
   commands stacked by hotkey.  In other words, if you have 4 commands all
   with the same hotkey, and you call -B on the second one, only the first
   and second command will run, the 3rd and 4th will be skipped because the
   -B menu command breaks the chain of commands.

 + Mystic's PKT reader will now handle the 65535 auxNet format which appears to
   not be in the FSC, and I have no idea where it comes from but Mystic should
   now handle it correctly.

 <ALPHA 1.12 A15 RELEASED -- May 23, 2016>

1.12 Alpha 16

 ! Fixed a problem exiting the prompt editor introduced in last alpha

 ! Mystic now properly populates auxNet for point systems in PKTs.

 ! Fixed a pretty big bug when acting as an echomail hub with multiple
   downlinks that used raw PKT mail instead of compressed bundles.

 <ALPHA 1.12 A16 RELEASED -- May 28, 2016>

1.12 Alpha 17


 ! Fixed an issue with Python get_user that I broke in last alpha.

 + Duplicate file scans are now case insensitive even in Unix environments, due
   to many older DOS systems creating .TIC files that do not match the actual
   case of the filename.  YOU MUST RUN MUTIL FILEBASE PACKER ONCE TO REGENERATE
   NEW FILE BASE INDEXES AFTER UPGRADING TO ALPHA 17 IN LINUX, OSX.

 ! MUTIL will now more graciously handle a configured invalid duplicate
   database size value.

 + Specifying a 0 or negative value for dupe database size in MUTIL will now
   disable dupe tracking entirely.

 + MUTIL will now refuse to run if the semaphore directory does not exist.

 + MUTIL now creates a mutil.bsy file in the semaphore directory.  If this file
   exists, MUTIL will refuse to run - preventing multiple instances of MUTIL to
   be executed at the same time.  If the BSY file has existed for more than a
   day, MUTIL will remove it and run as expected.

 + FIDOPOLL now creates a "fidopoll.bsy" in the Semaphore directory while its
   running.  This works in the same way as MUTIL does to prevent multiple
   instances of itself from running.

 + MIS now creates a "mis.bsy" in the Semaphore directory while its running.
   This works the same way as MUTIL and FIDOPOLL to prevent multiple instances
   of itself from being executed.

 + FIDOPOLL and MIS BINKP now use a .BSY file system.  These files are created
   alongside the .out files when queuing and sending mail for a node.  If the
   .BSY file already exists for that node, Mystic will not queue mail for that
   node.  If the .BSY file is more than a day old, Mystic will assume the .BSY
   file was accidentally left over from a stopped process and will exchange
   mail for that node as requested.

 + MUTIL echo export will now create and check for .BSY flags when exporting
   messages.  It will wait for up to 3 minutes for all downlinks to NOT be
   busy prior to exporting, while flagging any echomail nodes as owned by
   MUTIL as they become freed up by other processes.  This continues until
   MUTIL "owns rights" to every echomail node, so that it can toss mail without
   interfering with any other mail process (BINKP server, client, FTP, etc).

   If the 3 minutes expire, MUTIL will exit because it cannot process mail when
   nodes are exchanging by BINKP/FTP.  MUTIL will not remove semaphores in this
   case, so the cycle can continue until the export is processed successfully.

   Like other areas, if a .BSY flag stays for more than a day, it will
   automatically be removed and assumed to be a result of a stuck process.

   This system works hand in hand with BINKP server and FIDOPOLL (and even
   BINKD) so that no nodes will transfer mail when MUTIL is tossing mail
   to them, and MUTIL will not toss mail while a node is picking up mail.

 + MUTIL tossing to downlinks during importing now works the same as the
   export system described above.

 <ALPHA 1.12 A17 RELEASED -- June 3, 2016>

1.12 Alpha 18

 + MPL programs now load entirely into memory.  As a result, the current
   maximum size of a compiled MPX file is now 128KB instead of being
   unlimited, but this can be easily increased if needed.  This move increases
   execute parsing speed by about 20%, but MPL is still about 60-80% slower
   than Python (in 32-bit.  64-bit MPL is much closer to the same speed).

 + Rewrote the archive viewing functions for a massive speed up.  A ZIP file
   that contained 15,554 files and 1,198 directories was imaged by the viewer
   in *47 MILLISECONDS* in A18 but took 10.5 SECONDS in A17.  HUGE
   DIFFERENCE!

 + FIDOPOLL now has a "killbusy" command which will delete any existing .bsy
   flags for all echomail nodes.  Note that this does not remove the program
   specific bsy files for MUTIL, MIS, FIDOPOLL, etc, just the echomail nodes.

   For now you can also run "killbusy all" and it will kill even the .BSY
   flags for the various tools such as MIS MUTIL and FIDOPOLL.  But this is
   undocumented and HIGHLY NOT RECOMMENDED to use.  In no circumstance should
   a .BSY file ever be removed when MUTIL MIS or FIDOPOLL is running.  This is
   a convience feature because the BSY system is new and may have quirks.

 + MPLC now properly syntax errors when attempting to assign a default value
   to a record variable.  This mistakenly compiled in 1.11 but did not work.

 + Added a "mis.log" in the logs directory which gives some very basic status
   during startup and shutdown of MIS when its running in DAEMON mode in Unix

 ! This is part bugfix and part new MPL feature.  You can now do this with
   records and arrays and records within records.  Another huge win for MPL:

   Type
     TestRec = Record
       Key  : Integer;
       ATest: Array [1..25] of Integer
     End
   Var
     Test : TestRec
     B    : Integer;
   Begin
     Test.Key             := 10;
     Test.ATest[Test.Key] := 5;

     B := Test.ATest[Test.Key];

     WriteLn ('B=' + Int2Str(B));
   End.

 + The prompt editor will no longer erase the entire prompt if the first key
   pressed is the backspace key.  The other configuration editors will retain
   this functionality though.

 + Added a "Waiting for BUSY nodes" message to MUTIL import and export, so
   people do not kill MUTIL process thinking it locked up while its waiting.

 + MPLC now has many new compiling options.  -ALL now compiles all files in
   the current directory AND ALL SUBDIRECTORIES.  New options are:

     MPLC [path/file] Compile one script [path/file]
     MPLC -ALL        Compile all scripts in current directory and subdirs
     MPLC -C          Compile all scripts in current directory
     MPLC -P [path]   Compile all scripts in [path]
     MPLC -R [path]   Compile all scripts in [path] and its subdirectories

 ! Fixed a bug that could cause MIDE to lock up when including files.

 + MIDE and MPLC now only update the screen status every 10% when compiling
   a while, instead of every 1%.  The scaled back update makes compilation
   more than twice as fast on my system.  Big win!

 + MPLC will now track all encountered errors during compilation, and will
   print an error summary to the screen after all files have been processed.

 + If the first word in a MPL source file is "library", MIDE and MPLC will not
   compile the source file and instead will report an immediate "success". This
   can be used so that if you create an include library, it will only be
   compiled when its included by a program, and not as a stand-alone MPS file
   when encountered by MPLC.
   
    <ALPHA 1.12 A18 RELEASED -- June 8, 2016>
   

1.12 Alpha 19

 + New formatting MCI code |$Txx will cut off a value if it is longer than
   XX characters so that its length is XX.  If the value is less than XX
   characters it does not do any formatting to the value.

 + Added a -VER option to mystic.exe that will print the version and exit.

 ! Fixed a bug I created in A18 that would cause QWK networking importing to
   incorrectly read the message contents.

 + MPLC will now try to search search for include files in the same directory
   as the source file, if no directory is found in the include file name.

 ! Fixed an issue with MPL parsing of files by reverting some of the parsing
   optimizations back to the old stuff.  MPLC will still be faster but not
   quite as fast as A18.

 ! Fixed a potential issue where MIS could drop root before binding the ports
   of all of the servers in the Unix versions.  This could cause a situation
   where one or more servers fail to bind, while others bind find during
   startup.

 + MIS now waits until all ports are bound and privileged access has been
   dropped before creating the .BSY file.  This may or may not change again!

 + Themes now have 4 Box styles, up from just one.  In addition, each box
   style now has some additional options available to it.

 + New MCI code performs a popup Yes/No box and the result will be used as
   the following YES/NO answer.  Mostly to be used in the "prompt" of a yes/no
   question.  The format is:

      Syntax:  |#Y#<style #>#<Y position>#<header>#<text>#
      Example: |#Y#2#10#Confirm#Do you want to do this?#

      The above example will pop up a Y/N box using style 2 with a header
      of "Confirm" and a message box text of "Do you want to do this?".

   After the YES/NO box, Mystic will restore the screen to the original state
   before the box was shown.  This function only works with ANSI graphics.

 + New MCI performs a pop up vertical selection box, with the selected item
   hotkey being pushed into the input buffer, and the screen restored to its
   original state after selection.  This only works with ANSI graphics. The
   format is:

     Syntax: |#V#<style#>#<X position>#<Y pos>#<header>#<commands>#

     <Commands> is a comma separated list of commands in the format of
     <hotkey>-<text>.  If <text> is blank, the hotkey will be allowed by not
     shown in the list.  If the entire entry is blank a blank line will be
     inserted into the list.

     Example:

     |#V#2#30#10# Header #A-Selection A,B-Selection B,C-Selection C#

     Creates a pop up lightbar box in style 2, starting at X30 Y10 that has
     three options:

        .----- Header ----.
        |  A Selection A  |
        |  B Selection B  |
        |  C Selection C  |
        `-----------------'

 + New MCI code draws a box using a specific theme style.  It does not take
   input or erase itself at all.

     Format  : |#X#<style>#<header>#<x1>#<y1>#<x2>#<y2>#
     Example : |#X#2# My Header #20#10#60#16#
     Result  : Opens a box at X20 Y10 to X60 Y16 using style 2 and
               header " My Header "

 + Python scripts can now be executed from the command line, just like MPL
   scripts.  The format is the same except -Y is used, so for example:

     mystic -uSysop -ppassword -ytestpython

 + Mystic's full screen message editor has been converted to a .ini file
   format instead of the old ANSI style template.  The following files are now
   part of the message editor template:

      msg_editor.ini
      msg_editor.ans
      msg_editor_quote.ans
      msg_editor_help.ans

   New defaults are included with a redesigned look that uses some of the new
   box MCI codes to pretty things up a bit and to give a functional example of
   them.

   If you used a customized full screen editor, you will of course have to
   remodify the new defaults to your liking.

   Also in this new message editor is the spell checking and word suggestion
   engine, which required a bunch of code changes to the screen updating and
   wrapping.  Because of this, the spell checking itself is not going to be
   documented just yet until the new editor gets a little testing.  Spell
   checking will be enabled very soon, assuming I do not have troubles porting
   it to 64-bit.

 - As a result of the new message editor template, prompts #354, 355, and 356
   are no longer used as they are now in the .ini file.  In addition, ANSI
   display files "ansiquot.*"  "ansiedit.*"  and  "fshelp.*" are no longer
   used and can be deleted from your text directories if you'd like.

 ! Fixed a bug in my string list class that I created in A18 I believe.  No
   telling what problems it caused but it could have been many.  I know at a
   minimum it was breaking the FTP client (qwkpoll/fidonet FTP mailer).

 + Renamed UPDATE.EXE to UPGRADE.EXE because Windows 10 acts weird when a
   file named update.exe is executed.

 + I am sorry to do this, but I think few people use them.  The format of the
   |#B and |#I MCI codes has changed to the following:

     OLD: |#B<header>#<text>#
     NEW: |#B#<style>#<Y position>#<header>#<text>#

   This adds the new style system into the mix, and also now allows you to
   specify the Y line where the msgbox stands.  If you use either of these
   MCI codes you'll have to update those places.

 ! No longer shows an error message when executing a MPL file that doesn't
   exist.
   
   <ALPHA 1.12 A19 RELEASED -- June 13, 2016>
   

1.12 Alpha 20


 ! Fixed a bug introduced in A17 when using CTRL+U in the user editor to
   upgrade security levels.

 ! Fixed the description editor in file base editor.  For now its just going
   to load the message editor until I decide how I want to redo this part.

 ! Reverted my A17 changes in the string library, because while its a
   performance increase, its too risky to wait and find/fix all of the things
   that break because of the change.  This will fix a lot of the new quirks
   that have shown up out of nowhere since A17.

 + Added some additional logging into the population and updating of FLO
   files when exporting echomail via MUTIL.

 + Mystic's networked QWK packets should now honor the actual date and time of
   the message.

 ! Mystic's menu editor was not regenerating a new UID when pasting a menu
   command.  This really only causes a problem if someone is using a grid
   style menu.

 + Added new menu action "IT" which opens an outbound telnet session.  The
   optional menu data must contain the address to connect to via the
   following:

      /addr=<address>[:port]

   If no port is specified it will default to 23 for Telnet. For example:

   /addr=mybbs.strangled.net
   /addr=mybbs.strangled.net:2323

   The CTRL+] key is the escape hotkey which will allow the user to
   immediately disconnect from the remote system at any time.

 + Added new menu action "IR" which opens an outbound RLOGIN session. The
   optional data should contain a minimum of an address, username and password
   using the same format for the address as the telnet command, with these
   additional RLOGIN specific commands:

   /user=<username>
   /pass=<password>
   /swap

   Swap tells Mystic to send the username first then password as this is
   typically password then username in the BBS scene, but others require the
   username to be sent first.

   If no port is specified, Mystic will default to port 513 which is the
   default RLOGIN port.  The escape key is ^] just like in Telnet.

   Example:

     /addr=twgs.mybbs.com:513 /user=g00r00 /pass=mypassword /swap

 + The following prompts have replaced some UNUSED prompts in the prompts
   file of each theme, these are used by the TELNET and RLOGIN functions:

     ; TELNET/RLOGIN: Connecting prompt &1 = address &2 = port
     354 |CR|08> |07Escape sequence is |08|15CTRL+|15]|08.|CR|08> |07Connecting to |15|&1 |07port |15|&2|08.|CR

     ; TELNET/RLOGIN: Connected successfully
     355 |08> |07Connected.

     ; TELNET/RLOGIN: Unable to connect
     356 |08> |12Unable to connect: Press a key|PN

 ! Possibly fixed a bug in the message base packer that could cause corrupted
   message bases in certain circumstances.

 <ALPHA 1.12 A20 RELEASED -- June 15, 2016>

1.12 Alpha 21

 + The RLOGIN menu action will now translate @USER@ to the user's handle when
   used in the "/user=" or "/pass=" part of the command data.

 + MUTIL now prints the version in the logging on startup.

 ! Fixed broken telnet/rlogin commands.

 ! The library "revert" from the last alpha didn't actually happen, so this
   time its really happened.  Should fix up a bunch of little quirks
   introduced in A17.

 <ALPHA 1.12 A21 RELEASED -- June 17, 2016>

1.12 Alpha 22

 ! Fixed some bugs with the upload process, created by the upload rewrite a
   couple alphas ago.

 + Changed the processing of "trashcan.dat" user names to check for the user
   name before offering to create a new user account.  If a name is entered
   from trashcan.dat at login prompt, Mystic will send them a new prompt:

     ; Login prompt: User enters a username found in trashcan.dat
     375 |CR|12That user name is unacceptible.

 + Added new default MPL script menucmd.mps

 ! Fixed a problem with MIDE executing MPL scripts from within the editor
   when passing program params.

 + Added some exception trapping into MIS in a few places which may or may
   not improve stability when running in UI mode.  Just a band aid until the
   new MIS is ready.

 <ALPHA 1.12 A22 RELEASED -- June 23, 2016>

1.12 Alpha 23

 ! Fixed a bug which could cause a crash when exiting the message editor,
   rarely seen except when editing auto signatures.

 + Mystic has a new MSGID generation algorythm.  This can generate ~ millions
   of MSGIDs per second across up to 1000 concurrent processes without creating
   a collision for 100 years, and it can fit it into a 32-bit integer.  I say
   up to because my hardware is not powerful enough to push it to its limit.

 ! Messages posted by user uploaded REP packets were not adding MSGID to
   posts made in echomail bases.  Should be fixed.

 + Messages posted by REP packets will now replace "--- " with "___ " which   are assumed to be lines containing a QWK reader tear line.
   are assumed to be lines containing a QWK reader tear line.

 + When uploading a .REP packet in Unix based systems Mystic should no longer
   require proper filename casing.  MYSTIC.rep mystic.REP MyStiC.REP should
   all be recognized.

 + QWK performance improvements when creating QWK packets for download.

 + Significant performance improvements to processing of user .REP packets

 + Mystic QWKE will now flag netmail bases as PRIVATE even if the base itself
   isn't configured as Private.

 + Mystic's QWK/QWKE will now set the private read/unread and public
   read/unread flags where applicable.

 + Netmail message bases will no longer be included in QWK packets due to
   limitations in the very outdated standard.  Netmail bases WILL be included
   in QWKE packets.

 + Mystic's QWKE system now supports Netmail via QWKE, and will change the
   To and From field to contain the user name and the origin/destination
   address.  Simply replying to the message and keeping the name and address
   in the To field will allow Mystic to route the netmail accordingly when
   it is importede from a .REP packet.

 + Mystic now properly applies a group-independant "Post ACS" check for each
   message within a .REP packet.

 + Mystic now creates an index of all personal messages in QWK packets, used
   by some readers to quickly give a reference to all personal messages.

 + Mystic now changes all "personal" message "TO:" fields to the user's alias
   when creating a QWK packet.  Some readers apparently will not show messages
   marked as private/personal if the TO field does not match the name found in
   the QWK information file. (ie, Bluewave).

 + When using legacy QWK and a QWK base name isn't set, Mystic will use the
   first 13 characters of the configured message base name.

 + The "MysticQWK" control name for QWK control messages (adding dropping
   bases and other things from the reader) is now case insensitive.

 ! Fixed a QWK bug that could cause the wrong origin line to get added to
   a message.

 ! Uploading ANSI into the FSE or ANSI editor no longer strips ICE/blinking
   colors.

 + Added some additional exception handling to BINKP server which could
   possibly prevent MIS from stopping on a crash during BINKP.

 + The FTP server now has a "PASV hostname" option which if set to your
   hostname, will be resolved into an IP on server startup and used for PASV
   data connections.

 <ALPHA 1.12 A23 RELEASED -- June 28, 2016>

1.12 Alpha 24

 ! Fixed a bug created in A23 QWKPOLL that could cause it to crash.

 + Slight optimizations to the FTP client used in QWKPOLL when using PORT
   based transfers.

 ! Fixed a bug created in A23 that caused the wrong origin to be used on
   Netmail messages posted by QWK and uploaded while a logged in user to the
   BBS (This didn't happen when uploading via FTP).

 + On the fly Spell checking and word suggestions are finally enabled and
   working on all platforms of Mystic.  The msg_editor.ini has been updated
   to include some new options, and those with custom templates will need to
   update theirs in order to use spell checking, if they desire.  See the
   upgrade instructions for more information.

   Mystic uses a well known dictionary format, and therefore has access to
   just about every language and dialect you can think of, and can support
   using multiple dictionaries simultaneously.

   There is also a mystic_spellcheck_v1.zip floating around on the website
   and various places which contains documentation and all of the files you
   need to get spell checking going on all versions of Mystic.

 + Mystic OS X is now compiled using El Capitan and FPC 3.0, and comes in
   both 32-bit and 64-bit Intel flavors.  In the past only 32-bit versions
   were available, so those who switch to 64-bit on their 64-bit OS should
   see upwards of a 30% performance increase in certain areas.
  
   <ALPHA 1.12 A24 RELEASED -- July 1, 2016>

1.12 Alpha 25

 ! Fixed a bug in the Message Index Reader when sorting groups

 + The post text file menu command now uses the new Message base IDs, so if
   you use this function make sure the number matches the message base ID.

 + Mystic now saves the last msg/file groups and bases between sessions by
   the ID.  This should make it less likely to end up in a "None" group
   when logging in.  Note the first login after updating may result in None.

 + Performance increases when resetting file new scan date.

 + Toggling file new scan settings now shares the [A]dd all and [R]emove all
   options that the message base new scan has.  I never realized they were
   not equal in features.  Updated default prompt #202 to include the new
   A/D options.

     ; Select scanned file bases prompt
     202 Toggle: |09[|11#-#,#|09], Select [|11A|09]dd All, [|11R|09]emove All, [|11?|09/|11List|09]: |XX

 ! Fixed a bug in the spell checker auto suggestion that would cause it to
   not properly detect the word under the cursor in longer messages.

 + FIDOPOLL now has a "search" option which will allow you to do a quick
   search of the nodelist.  The search data can be an address or text, and
   wildcards are valid for addressing.  IE:

     fidppoll search 21:*/*
     fidopoll search 1:129/*
     fidopoll search james

 + FIDOPOLL [address] will now search the nodelist and attempt to connect
   via unsecured BINKP if [address] is not defined in echomail nodes.

 ! Fixed a bug in the nodelist browser where the Internet address was not
   always properly parsed.

 + Added some more exception handling to the various MIS servers.

 + Mystic now has a File Index lister, which is the file area equal to the
   message reader index.  This has taken the original message version and
   expanded on it.  New menu command FI with an optional data of the template
   name, if you wish to use something else (otherwise file_index.ini is the
   default).  Copy file_index* into your theme's text directories

 + MUTIL now properly detects and moves circular path echomail to the
   duplicate message base if one is defined.

 + Reverted MIS to use my own custom thread library.  I don't know why I
   stopped using it, but there might have been a reason lol

 <ALPHA 1.12 A25 RELEASED -- July 6, 2016>

1.12 Alpha 26

 ! Hopefully fixed a bug introduced in MUTIL A25 causing it to write the
   wrong message header when tossing messages.

 + Mystic no longer regenerates a new MSGID when re-editing message text,
   instead it will continue to use the original.

 ! Mystic should now properly handle circular checks if the system sending
   the PKT is a point system.

 <ALPHA 1.12 A26 RELEASED -- July 7, 2016>

1.12 Alpha 27

 ! Fixed a bug in the new QWK system that on some occasions could cause some
   but not all QWK readers to have problems with the packet.

 + When selecting a message from the message list and then returning to the
   list afterward, Mystic will now start with the last message read at the
   top of the list.

 + Significantly increased the performance of the HOME key in the message
   listings in areas with a lot of messages.  Should be mostly instant even
   with hundreds of thousands of messages.

 + Significantly increased the performance of the END key in the message
   listings. Should be nearly instant even with hundreds of thousands of msgs

 ! Fixed a bug with (I)mport DIZ in the File Listing Editor

 + Updated automessage.mps for new message editor.

   <ALPHA 1.12 A27 RELEASED -- July 9, 2016>

1.12 Alpha 28

 ! Fixed what should be the final bug in the new dupe system which affected
   point systems.

 ! Fixed the FA + menu action that I broke in the file_index alpha.

 + Mystic 1.12 now uses the socket engine from Mystic 2.0.  This library
   supports IPV6 and SSH/various SSL protocols.  More to come.

 + Windows versions of Mystic now comes with Info-Zip zip.exe and unzip.exe
   which will be found in the root installation directory.

 + Added FBaseIndex variable into MPL.

 + Added new MIS2 server binary, which is the eventual replacement for MIS.
   This version currently only supports the TELNET, RLOGIN, and SSH servers
   but also includes IPV6 support as well.  The existing servers will be
   rebuilt one by one and added into MIS2.

   To avoid conflicts, the event system remains only in MIS for now.  If you
   want to use TELNET, RLOGIN, and SSH along with the existing servers,
   you will simply run both MIS and MIS2 for the time being while MIS2 is
   developed.

   Servers are defined using the Server Editor found in the Configuration
   under Servers -> Edit MIS2 Servers.  This will change a bit when the
   original MIS is removed.

   You can create any number of servers, and all settings are completely
   independant of each other.  You can even create multiple servers of the
   same type!  You can have IPV4 on one adapter while IPV6 runs on another
   NIC, for example.  One telnet server on port 2323 and one on port 23, etc.

   Blacklist DNS and country blocking is not in the new server yet, but
   auto banning is.  New ban files are whitelist.txt and blacklist.txt in
   the DATA directory, so they do not interfere with the existing MIS files.

   Entries in these lists can contain a mixture of both IPV4 and IPV6
   addresses and can contain a single wildcard, using an asterisk to mask an
   IP range.  For example "127.*" would block any IPV4 address that begins
   with "127.".  IPV6 works in the same way, expand the IPV6 address up to the
   point where you want to wildcard it, such as "014f:*"

   In order to use SSH and SSL variations of servers, you will need to
   install Cryptlib.  This is pretty basic in Linux and even easier to do in
   Windows because it requires simply dropping a file into the library path
   or root Mystic directory.
   
   <ALPHA 1.12 A28 RELEASED -- July 14, 2016>

1.12 Alpha 29

 ! Mystic should no longer track inactivity while a user is connected to an
   outbound telnet or rlogin system using IR or IT commands.

 ! Fixed newletter, sysletter, hackwarn automated e-mails broken in A27/A28

 + New menu action: "IS" works just like the TELNET and RLOGIN commands
   but does outbound SSH.

 + Outbound TELNET, RLOGIN, and SSH are completely rewritten.  No longer does
   codepage translations based on the users terminal type, and the ^[ key no
   longer will escape a terminal session.  As a result, it should be feasible
   for transfers to work now but this may require a bit more work and testing
   with various terminals.

 - Removed the /SWAP option to IS, IR, IT menu actions.  If you need to
   swap them, just swap them by assigning /user= to the password and vice
   versa.

 - Added new options to IS IR IT menu actions: /port=<port>.  Due to IPV6
   support being added soon to these functions, the ":" will no longer be
   used to separate address from port, for clarity.  You must update any
   existing IS IR IT commands that do not use the standard port to use a
   /port= instead of a semicolon.

 ! Fixed a few stability problems with the new MIS2 server.

 ! Fixed an error in my compilation that caused errors because I forgot to
   compile in support for threads.  This could be seen in Nodespy, and in
   outbound sessions and maybe a couple other places?

 + All passwords in the echomail node editor are now not forced to uppercase
   during input.  This SHOULD be a cosmetic change because those passwords
   are all supposed to be case insensitive (except for session passwords).

 ! Fixed the broken next and previous file group change.

   <ALPHA 1.12 A29 RELEASED -- July 16, 2016>

1.12 Alpha 30

 ! Lots of changes/fixes to SSH server on the Linux side.

 + Mystic's logging now allows more for than 255 characters per log line.
   This required a bunch of library changes, so there may or may not be some
   other things affected by this in a bad way.

 ! BINKP should no longer choke when the address string is more than 255
   characters.

 + Changed the /ALLGROUP option for the FF menu command to /GLOBAL

 + Added /NOASK option to AT menu command.

 + The stale .BSY file check has been decreased to 2 hours down from 1 day.
   This applies to echomail node locks, mutil, and fidopoll but not MIS of
   course because its very common for that to run for many hours.

 + MIS2 now has a BINKP server type.

 ! Fixed a problem with viewing archive contents of LHA Level 1 files with
   embedded directories.

   <ALPHA 1.12 A30 RELEASED -- July 21, 2016>
   

1.12 Alpha 31

 + Changed MIS2 to use Free Pascal thread library instead of my own to see if
   it is more stable.

 + The MX command should now default to the message base address when posting
   echomail, so if no address is specified it should not default to 0:0/0

 + MIS2 will never recreate ssl.cert now, it will only be created when it does
   not exist.

 ! Fixed datestamp in MIS2 logs


   <ALPHA 1.12 A31 RELEASED -- August 2, 2016>
   

1.12 Alpha 32

! Fixed a problem in QWK packets that could cause packet corruption when
   processing messages greater than 64kb.  Great big thanks to William
   McBrine for the report and the suggested fix: Check out his awesome mail
   reader MultiMail if you haven't!

 ! When processing echomail PKT files, Mystic was not properly reading in
   the seconds from the message post date/time, if it was supplied by the
   sending mailer.  Please note that in some cases, this could invalidate
   current duplicate message databases, but this will of course correct
   itself over time.

   For clarification: QWK and QWKE do not have message seconds so there is
   no similar issue on the QWK side.

 - Turned off debug logging in MIS1 BINKP and FIDOPOLL.  Rejoice (for now!)

 ! Posting multiple text files at once with MUTIL to the same FTN networked
   message base could create posts that all contained the same MSGID. Fixed.

 + MUTIL PostTextFile now includes the TZUTC kludge when posting to
   FTN-style message bases.

 ! MX menu command (post text file to message base) was not adding the MSGID
   or TZUTC kludges when posting to a FTN networked message base.  Fixed.
   
   <ALPHA 1.12 A32 RELEASED -- May 5, 2017>
   

1.12 Alpha 33

 + Added some additional error logging to MUTIL's TIC processor when
   attempting to open and close TIC files.

 ! Replaced the old MSGID system with a new system. All parts of Mystic now
   use the same unified piece of code to generate MSGIDs.  This should also
   fix the recent dupe MSGID bugs mentioned in previous alpha.

 + Mystic now shows the operating system "bit" in Tear lines in messages.

 + Changed references of "OSX" to "macOS".

   <ALPHA 1.12 A33 RELEASED -- May 12, 2017>
   

1.12 Alpha 34

 ! Fixed a bug which could cause a bad memory reference error in various
   places within Mystic.

 ! MUTIL PostTextFile wasn't taking into consideration the tear and origin
   lines when posting to a networked base while splitting large posts into
   multiple messages.

 + -VER commandline option in Mystic now prints the OS information too.

 + Increased buffer size when writing message text to JAM bases to 32k up
   from 8k

 + Mystic JAM will no longer strip spaces from the right side of MSGID tags
   in JAM to help work around a bug with GTPower.

 ! JAM Reply CRC and Msg To CRC were not always converted to lower cased
   before calculated. As per JAM specs all CRC calculated on string must be
   lower cased first.  Packing message bases will regenerate these.

 + Reduced the time it takes to calculate Message Index Reader statistics
   by about 60%. Statistics may be calculated incorrectly unless all bases
   have been ran through the message base packer once to regenerate CRC values

 ! Fixed a bug which could cause some node processes to not detect when a
   user hangs up, possibly resulting in a ghosted user or even a stuck
   process.

 + Added a new internal protocol Xmodem/CRC. This protocol can be added by
   creating @XMODEMCRC in your Protocl Configuration and has not had much
   testing.  **This is experimental; it may or may not stick around**

 + When shutting down MIS2, it no longer prompts to press a key when closing
   but instead displays a "shutdown complete" message and pauses 1.5 seconds

 + When editing a file entry in a file base there is now a (H)atch command
   which allows files to be hatched to all networked systems linked to that
   file base.  Files to be hatched will have a "Hatch pending" text or a
   Hatched flag if the request was already processed.

 + Mystic now creates "filebone.out" semaphore file whenever a new file is
   requested to be hatched.

 + MUTIL TIC processor will now scan for requested hatches.  Any files
   requested to be hatched will have an appropriate TIC file created
   in each linked node's filebox, and the file will be copied to each
   linked node's filebox.

 + In addition to existing /E to view networked message bases linked to a
   node, the echomail node editor now has a /F to view and edit networked
   file bases linked to a node.

 + Significant stability improvements to MIS2 along with some minor cosmetic
   changes.

 ! Changed PKT addressing on pass-through echomail so that BBBS systems with
   its security feature enabled will not reject packets.

 + In the echomail nodes editor, when enabling a FileBox with a blank filebox
   location, Mystic will now give the option to automatically generate and
   create a directory for that node.  The format used by Mystic for the
   directory is as follows:

     Root filebox directory = <mystic root path> + "/filebox/"

   Each directory is created under the root location with the format of:

     <domain>_z<zone>n<net>n<node>  (p<point> appended only for points)

   Example for 21:1/108@fsxnet when installed to c:\mystic would be:

     c:\mystic\filebox\fsxnet_z21n1n108\

   <ALPHA 1.12 A34 RELEASED -- June 23, 2017>
   

1.12 Alpha 35

 + File bases now have a "File Echo Hub" flag which if set to Yes will
   prevent any pass-through files for this file echo.  If a new file for the
   base is received via a TIC it will be added to the file base, but not sent
   to any downlinks (unless manually hatched by the SysOp).

 ! Fixed a bug where hatched files were creating the wrong CRC value in .TIC

 ! Files hatched by Mystic were not getting the Origin field added in .TIC

 + Reduced the time it takes for calculation of area index reader statistics
   by an enormous amount, at the expensive of some accuracy.  In A33 my test
   took 6 seconds to complete a list of 300 areas with around 250,000
   messages.  In A34 I reduced it to 2.5 seconds.  In A35 its now taking
   a shocking 1/20th of one second!

 ! Fixed a bug in startup.mps when using its automatic login feature that
   could cause a crash.

 + STARTUP.MPS now allows a "UserLoginNew" boolean variable to be set which
   will push to the new user application when TRUE.  This allows MPL to
   completely replace the user login/new user processes if desired.  All MPL
   programs will need to be recompiled in this alpha.

 + Mystic will now create an "errors.log" file in the logs directory which
   is intended to be a universal place where any errors that happen in any
   part of Mystic (MIS, Mystic, MUtil, etc) will be logged.  This is a work
   in progress.  The idea is to expand on this to allow notifications within
   the MIS2/NodeSpy UIs but also to optionally have SMS/e-mail notifications
   when your BBS has errors.

 + Mystic node logs now have a cleaner output in preparation for future log
   rolling and log levels for node specific logs.

 + Completely rewrote the startup and shutdown procedures for Mystic.  This
   should be transparent to everyone but I mention it just in case.  Handling
   of connection loss and inactivity timeout events have been reworked.  This
   will allow me to do things such as implement a draft message system for
   resuming your posts (if you lose connection while posting) among other
   things.

 + Themes (regardless of when one is selected) will always fallback to the
   default theme if an error occurs while attempting to change themes.  In
   addition, -CFG can now be loaded when there is no theme configuration at
   all.

 + New MCI code <pipe>AA turns aborting ON for the current display file. This
   goes along with the existing AO code which turns aborting OFF for the
   current display file.

 + More stability work on MIS2 particularly for Pi and (hopefully) macOS
   this time although I have had limited time to do testing.

 + Performance optimizations to input functions on all platforms

 + Added new CFG variables to MPL: "CfgLoginTries", "CfgPWTries" return those
   respective settings and CfgEchoChar returns the password character for the
   current theme.

 + NodeSpy terminal now supports sending of the INSERT and F1-F10 keys to
   remote servers.

 + When connecting using NodeSpy terminal, ESCAPE will now abort connection

 + NodeSpy now has a Port field separate from the address field.  If the port
   is set to 0 then the default port will be used for that connection.  Old
   entries that used ":<port>" in the address field will have to be edited
   manually to remove the :<port> and set the Port field.

 + NodeSpy now supports both SSH and RLOGIN connections.  Entries will now
   have a configurable Protocol option where the connection type is set.

 + NodeSpy now sets connection type and name of the entry connected to in the
   window title. IE: NodeSpy/Terminal (SSH) mybbs.com

 + Removed the -PATH command line option as now -CFG should work always.

 ! Fixed a bug in the FS message editor and ANSI editor cut and paste
   functions which could cause the cursor to get completely lost.

 + Mystic's TIC processor will now always write "MS-DOS" format text files
   when writing or updating a .TIC file.  If it receives a .TIC in a
   different format, it will still covert it to MS-DOS.  This is to possibly
   provide better compatibility with DOS-based processors that may fail to
   properly read a Unix text file.

 ! Fixed a bug where MIS2 BINKP was always using an internal buffer size of
   128 bytes, instead of the intended 32KB for each send/receive buffer.

 + Mystic's random display file system now also will include letters a-z,
   allowing up to 36 randomly selected display files per filename, up from
   11.  It works the same as before.  If myansi.an1 exists, then Mystic
   will randomly select any file that exists in the myansi.an0-myansi.an9
   range or myansi.ana-myansi.anz range.  For OSes with case sensitive
   filenames, the extensions are always lowercased.  They do not have to be
   in any order, just .an1 has to exist to "trigger" the random system:

      myansi.ans
      myansi.an1
      myansi.anz
      myansi.an5

 + When killing a "ghost node", NodeSpy will now attempt to send a kick user
   command to the actual node.

 + When a Windows node is shut down by right clicking and closing from the
   task bar or when closing the window from the "Window preview" on the task
   bar, Mystic will no longer create a ghost node.  It will also log an
   "irregular shutdown event" to the errors.log file.

 + Mystic upload, mass upload and MUTIL upload will all now import
   FILE_ID.ANS if it exists as a priority over FILE_ID.DIZ.  These .ANS files
   can be full ANSI descriptions of files, up to 50 columns of art per line.

   If ANSI is found in a .DIZ file, Mystic will still continue to process it
   properly with the ANSI intact, just as it had before this release.

 ! Fixed a bug in MIS2 that could cause the configuration values to not be
   applied to BINKP server and for semaphore files to not be properly created

 + The MC (Check E-mail) command now has a /UNREAD option which will only
   list new unread e-mail messages, instead of all messages in your inbox
   when scanning for new messages.

   <ALPHA 1.12 A35 RELEASED - Sept 7, 2017 >

1.12 Alpha 36

 + MUTIL echomail export now logs to all log levels should it fail to release
   a BUSY flag for a node.  It will also add an entry into the global
   errors.log file.

 + MUTIL echomail import now logs to all log levels should it fail to release
   a BUSY flag for a node.  It will also add an entry into the global
   errors.log file.

 ! Mystic should now properly delete all the drop files from the node's temp
   directory when returning from a door.

 ! When routing pass-through netmail, Mystic was not setting the PKT password
   properly to the new routed node's configured PKT password.

 ! When calculating pass-through and exported netmail by route, Mystic was not
   skipping over echomail nodes that were flagged as Inactive.

 + Nodelist compiler will now process ?00 through ?99 compressed files instead
   of ?01 through ?99.

 + Mystic now logs an entry when returning from a door

 + Mystic now logs the command line for every program it runs, including
   doors and archives, etc.

 + Mystic now logs when it begins to shutdown a node normally

 + In Unix versions, Mystic will now "watchdog" any door process.  If the
   connection is lost, Mystic will immediately send a SIGTERM signal to the
   process and shut itself down.  This will fix the "DOSEMU 100% cpu" problem
   both on the DOSEMU side and the Mystic side.

 ! Fixed a BINKP bug where Mystic was not looking at the unsecure directory
   during unsecure transfers when it was comparing file sizes of files that
   already existed on the server.

 + Changed BINKP to not administer flood protection which seems to allow it
   to work better with IREX.

 ! When uploading REP packets online, the TZUTC kludge wasn't being added to
   messages.

 + Two new functions for Python: param_count() returns the number of
   parameters passed to the script.  param_str(#) returns the parameter number
   where # is the number.  Supplying (0) will give you the script location and
   name.  Supplying nothing will give you the entire command line.  Example:

     import mystic_bbs as bbs;

     bbs.writeln ("Number of parameters..: " + str(bbs.param_count()))
     bbs.writeln ("Full command line.....: " + bbs.param_str())
     bbs.writeln ("Script name...........: " + bbs.param_str(0))
     bbs.writeln ("|CRParameters (param_str):|CR")

     count = 0

     while count <= bbs.param_count():
       bbs.writeln ("   Param #" + str(count) + ": " + bbs.param_str(count))

       count = count + 1

     bbs.writeln("|CR|PA")

 + Running Mystic with a -VER now shows the date and time that Mystic was
   compiled in addition to the version.

 + Mystic will now include the compile date in the tear line for networked
   messages.  This will probably change in the future.

 ! BINKP was not always sending M_ERR frame when authentication is denied
   before connection was shutdown

 + MPLC now outputs to STDIO for better integration with compiling from 3rd
   party editors.

 + FIDOPOLL now uses the MIS2 BINKP engine, instead of the MIS engine

 + MIS2 now has an active event engine and the event engine in MIS has now
   been disabled.

 + Mystic now logs whenever a MPL script is executed

 + Mystic now logs whenever a Python script is executed

 + Mystic now logs user and password errors when supplied via command line

 + MIS2 now has local country blocking that works with IPV4 and IPV6.  It
   no longer uses a service, instead a local database exists in the DATA
   directory.  This database is named "iplocation.bin" and is a free
   LITE IPV4+IPV6 database located at:

      lite.ip2location.com/database/ip-country

   You should download the "IPV6 BIN" file, an example filename might be:
   IP2LOCATION-LITE-DB1.IPV6.BIN.ZIP and then rename the .BIN file inside
   of the ZIP as "iplocation.bin" in the DATA directory.  You will then
   use iplocation.txt also in the DATA directory to configure which
   countries to block, similarly to the way the old MIS worked.  For a
   temporary time you can also find a database at:

     www.mysticbbs.com/downloads/prealpha/iplocation.zip

   To enable this feature, configure it on a per-server basis in the servers
   configuration.

 ! Fixed a bug in the message linking, and also changed the way the linking
   creates its database.  This should hopefully allow for better accuracy but
   it is advised to pack your message bases once to make sure your bases are
   in good health if you don't do it occasionally, and then run the message
   link.

 + When debug logging is on MUTIL msg linking will now log each message it
   links and what it calculates for each message.

 ! FIDOPOLL was not honoring the BINKP packet size configuration in the
   Echomail nodes.  This could cause problems with older Mystic mailers that
   only supported up to 30KB packets because it defauled to 32KB

 + Node logs, FidoPoll and Mutil logs now all include the compile date along
   with the Mystic version.  This may be removed later.

 + The "GR" menu command (Gosub return) now has a "/NOEXEC" optional data
   option.  If this is supplied Mystic will not execute "FIRSTCMD" menu
   commands after returning to the menu.

 ! Fixed a BINKP bug where in a very rare circumstance the receive state
   could eat a frame that was intended for the send state.  This could cause
   the session to "timeout" as BINKP waits for the missing frame.

 + Changed QWK Networking HUBs to use the "Packet ID" configured in the QWK
   Network configuration instead of the BBS QWK packet ID.  The way it worked
   previously was confusing, but allowed for multiple hubs in a QWK network
   so it might be changed back before final release.

 ! FTP server was not showing the QWK packet in the root directory when using
   NLST instead of LIST

 ! Log rolling by day will now roll the log if the date rolls over at midnight
   while logging.

 + MIS2 logs are no longer buffered and should update immediately.

 + MIS2 now has an FTP server available in the MIS2 server configuration.  If
   you went rogue and tried to create an FTP server in a pre-alpha test before
   it was in the WHATSNEW then you need to go delete the FTP server before
   continuing, or else your FTP server data will get corrupted.

 + FTP server now supports Anonymous FTP.  File bases can be marked to
   "allow anonymous" and if so, those areas and the files within them will
   be available to Anonymous logins for free.

 + FTP server now supports IPV6 in both port and passive modes.

 + The FTP server will now resolve your configured BBS domain upon start up
   to get both the IPV4 and IPV6 address.  It will also perform this procedure
   every 1 hour so if a dynamic IP changes it will be detected.

 + FTP server connections now each have their own static passive FTP port
   which is the port configured as the "passive port start" plus the slot
   number added onto it.  This means you need to open up ports "FTP start port"
   + "max connections" - 1.  So if you have max connections set to 10 and your
   start port set to 60000 then you need to open up ports 60000-60009.

 + FTP server now prints if it cannot resolve domain IP on startup or when
   refreshing the IP addresses, and will also print the data port range the
   FTP server uses (which must be allowed through your firewall).

 + FIDOPOLL can now connect via IPV6.  There is a new option for each
   echomail node where IPV4 or IPV6 can be selected.  Unsecured outbound
   connections still default to IPV4 but a nodelist lookup for what seems to
   be a barely used "IPV6" flag may be added in the future.

 + MIS2 now has the NNTP server active!

 + MIS2 now checks the whitelist, blacklist, auto-ban by connection attempts
   when a connection is made before performing the duplicate IP check.  In
   the past, connections refused for connecting multiple times on the same IP
   were not being counted towards the auto-ban by connection attempts.

 + New event type has been added to MIS2 event manager: "IP Blocked".  This
   event can be executed every time an IP has been blocked by any MIS2
   server's auto IP ban configuration.

   The purpose of this is to allow you to run a command to create a block rule
   at the firewall level so that the IP cannot even reach MIS in the future. In
   Linux "iptables" can be used, and in Windows "netsh" can be used to do this.

   The @IP@ code in the shell command will be replaced with the IP of the banned
   account.  Mystic will still continue to add the IP to its own blacklist.txt
   as well.

   The default events in a fresh install now include example events for this.
   To create them in an existing environment, create a new event and set the
   type of "IP Blocked" and then the Shell command to:

     Linux   :
     Windows :

   In Windows the firewall prior to Windows Vista did not allow creating rules
   from the command line, so this default will likely only work for Vista or
   later versions.

   In most Linux installations iptables will be owned by root, and thus MIS
   will not have access to use the command.  You will need to chown iptables
   so the BBS user can access it, or chmod it so all users can use it.  Keep
   in mind setting it so all users can use it is not a secure approach.  An
   example of this might be:

     chown bbsuser:bbsuser /sbin/iptables

     If you are unsure where iptables is you could do a command from the root
     folder to locate iptables binary:

       sudo find . -name "iptables"

   Managing IP blocking rules:

     Show contents of block rules in Firewall:

       Linux   : iptables -L INPUT -v -n | less
       Windows : netsh advfirewall firewall show rule name="IP Block"

     Remove a blocked IP rule from Firewall:

       Linux   :
       Windows :

 + MIS2 servers now have a "Send Blocked" option to toggle on or off the
   sending of a message to the connected system when they are blocked.

 ! During startup MIS2 would create mis2.log and the tempmis directory with
   root access if they did not already exist.

 + MUTIL will now switch to the owner of its binary in a similar way that
   MIS and MYSTIC do, just in case someone tries to run it as root.

 + FIDOPOLL will now switch to the owner of its binary

 + MIS2 now has POP3 server.  I am not planning to do any significant testing
   until the SMTP server is added.

 + MUTIL FILEBONE.NA importer now allows the echotag to be used for the
   description and FTP name.  It also logs when an invalid line is discovered
   including the line number when debug logging is enabled.  See default
   mutil.ini for example of values.

 + MIS2 now has the SMTP server from MIS.  The old MIS has now been removed
   from the BBS and can no longer be used.  MIS2 has been renamed to MIS.

 + New MPL command: "GetFBaseID" files a file base by its ID and populates
   the FBase variables.  It also returns TRUE on success or FALSE on failure.

     If GetFBaseID(UserFBase) Then
       WriteLn ('You are in: ' + FBaseName)
     Else
       WriteLn ('You have not selected a file base yet');

 + New MPL command: GetMBaseID works the same as the GetFBaseID command above

 + New Python function "getuserid(ID)" returns a user dictionary of the user
   associated with ID.  If no user is found it will return None:

     import mystic_bbs as bbs;

     user = bbs.getuserid(1)

     if not user is None:
       bbs.writeln(user["handle"]);

 + New Python function "getmbase(num)" returns a Message Base dictionary of
   the record physically located at (num).  This example will print all of
   the message bases out:

     import mystic_bbs as bbs;

     count = 0;

     while not bbs.shutdown():
       mbase = bbs.getmbase(count);

       if mbase is None:
         break;

       bbs.writeln(mbase["name"]);

       count = count + 1;

     bbs.writeln("List complete. |PA");

 + New Python function "getmbaseid(ID)" returns a Message Base dictionary of
   the Message Base with ID of (ID).

 + New Python functions for reading Message Bases:

     msg_open, msg_seek, msg_found, msg_next, msg_prev, msg_gethdr,
     msg_gettxt, msg_close

   Rather than try to document them all here I've included a "msgread.mpy"
   in the default installation as an example of how to use these functions.
   This example implments a very basic message reader using the user's current
   message base.

 ! Mystic will now show "proto.xxx" or "protob.xxx" for batch-only protocols
   if they exist instead of generating a list of protocols.  PROTO should
   contain all protocols, regardless of batch or not.  PROTOB should contain
   only batch-supported protocols.

 ! Fixed a bug where Mystic was allowing non-batch protocols to be selected
   for a batch file transfer.

 ! Fixed a bug where the -Y and -N MCI codes were not always working for the
   next Yes/No prompt.
   
   <ALPHA 1.12 A36 RELEASED - Dec 3, 2017 >

1.12 Alpha 37

 + New Python functions for reading Message Bases:

     msg_open, msg_seek, msg_found, msg_next, msg_prev, msg_gethdr,
     msg_gettxt, msg_close

   Rather than try to document them all here I've included a "msgread.mpy"
   in the default installation as an example of how to use these functions.
   This example implments a very basic message reader using the user's current
   message base.

 ! Mystic will now show "proto.xxx" or "protob.xxx" for batch-only protocols
   if they exist instead of generating a list of protocols.  PROTO should
   contain all protocols, regardless of batch or not.  PROTOB should contain
   only batch-supported protocols.

 ! Fixed a bug where Mystic was allowing non-batch protocols to be selected
   for a batch file transfer.

 ! Fixed a bug where the -Y and -N MCI codes were not always working for the
   next Yes/No prompt.

 + Changed the format of the "scan" settings data for message and file bases,
   this should be total transparent to everyone, except that update.exe needs
   to be ran to update the data files.

 + MUTIL has a new "PurgeUserBase" function will which mark users who have
   not connected to the BBS in X days for deletion.  UKILL function has been
   removed from MBBSUTIL.  Default mutil.ini has been updated

 + MUTIL has a new "PackUserBase" function which will physically delete user
   records, private messages to and from them, their lastread pointers in
   message bases, their scan settings in message and file bases.  This can
   only be executed when there are no users online.  Default mutil.ini has
   been updated.

 ! Fixed a bug where MUTIL was not always removing the proper BSY files when
   it timed out waiting for a node to finish.

 + New Python function "charxy(x,y)" returns the character and attribute of
   the user's screen at the X/Y coordinate.  Example:

     ch, attr = charxy(1, 1);

     writeln("attr=" + str(attr));
     writeln("char=" + ch);

 + New Python function getcfg() returns basic configuration options in a
   Python dictionary.  I am not going to list out dictionaries here as I am
   adding to it as people ask for it, but for with any dictionary you can
   always iterate through it to see the elements until it lands on the Wiki

     import mystic_bbs as bbs;

     bbs.writeln("|CLElements:")

     cfg = bbs.getcfg()

     for key, value in cfg.items():

       bbs.write ("Key: " + key.ljust(20));

       if isinstance(value, bool):
         bbs.writeln(" Value: " + (value and "True" or "False"));
       elif isinstance(value, (int, long)):
         bbs.writeln(" Value: " + str(value))
       else:
         bbs.writeln(" Value: " + value)

     bbs.writeln("|PA")

 + New Python function "getyn(text, default)".  This presents a Yes/No prompt
   and returns True if they answer yes, False if they answer no.  The
   second parameter is the default selection (True is yes, False is no):

     if getyn("Is this an example? ", True):
       writeln("You answered Yes!")
     else:
       writeln("You answered No!")

 + New Python function "showfile(filename, baud, pause, abort, onlynew)"

   This function shows a display file and provides all options specific to
   how it is displayed as parameters and returns True or False depending on
   if a display file was found and shown.

   The filename logic uses the same as the GD menu command (see the Wiki
   documentation for GD for more info) which means it has implied paths and
   extensions and random display files if desired.

   The baud parameter is 0 for full speed or whatever the baud rate at which
   Mystic should display the file.

   The Pause parameter is a True/False value that when True will attempt to
   pause on a full screen.

   The Abort parameter is a True/False value that when True will allow the
   file to be adorted while display using the space bar.

   The OnlyNew parameter is a True/False value that when True will only show
   the file if it has been update since the user's last login to the BBS. Ex:

     showfile("gj-glue1", 9600, False, True, False)
     showfile("c:\mystic\textfiles\mytext.txt", 0, True, True, False)

 + New Python command "getprompt(number)" will return prompt (number) from
   user's currently selected theme.  If the prompt has been replaced with
   a script or display file, Mystic will execute the script or show the
   file.

 ! Fixed an issue where setting scanned bases with the /qwknet option was
   not showing anything in the QWK networking menu.

 + New Python command "stuffkey(text)".  This function adds text into the
   input buffer as if the user had typed it.

 + New Python command "sysoplog(level, text)" logs a line to the node's
   log using level as the loglevel.  Only if the loglevel is set equal to
   or greater than <level> will it be shown in the log.  Text is a string
   of text which will have a datestamp added to it automatically.

     sysoplog(1, "Welcome to my Python script!")

 + New Python command "access(acsstring)" returns True or False if the user
   passes (has access) to the supplied <acsstring>:

     if access("s20"):
       writeln("User has a security level of 20 or higher!")
     else:
       writeln("User has less than 20 security.")

 + New Python command "rwrite(text)" writes text to the user with no line
   ending and no MCI or color code processing.

     rwrite("You |12will actually see the color code here");

 + New Python command "rwriteln(text)" writes text to the user with no MCI
   or color code processing, and moves to the next line after sending:

     rwriteln("Line one")
     rwriteln("Line two")

 + New Python function "upuser(seclevel)".  Updates the current user's security
   profile to <seclevel>, which includes access flags, time left, daily
   limits, etc.  Ex: upuser(50)

 + New Python function "wherex" returns the current X location of the cursor

 + New Python function "wherey" returns the current X location of the cursor

 + New Python function "textattr" returns the current text color attribute

 + New Python function "textcolor(attribute)" sets the current text color
   to <attribute> where attribute is calculated as (FG + BG) * 16 so white
   on a blue background would be 15 + 1 * 16 (or 31).

 + New Python function "getmgroup(number)" returns a dictionary of the message
   group at record number <number>.

 + New Python function "getmgroupid(number)" returns a dictionary of the
   message group with the ID of <number>.

 + New Python function "getfgroup(number)" returns a dictionary of the file
   group at record number <number>.

 + New Python function "getfgroupid(number)" returns a dictionary of the
   file group with the ID of <number>.

 + New Python function "getfbase(number)" returns a dictionary of the file
   base located at record number <number>

 + New Python function "getfbaseid(number)" returns a dictionary of the file
   base with the ID of <number>

 + MUTIL's MergeNodeList should no longer care about the casing of the file
   archives or the nodelists within those archives.  In otherwords, its now
   case insensitive even on case sensitive OSes.

 + Mystic BBS now has a built in text editor which will be expanded on as
   development continues.  Like all of Mystic's functions this is designed to
   work over any terminal connection and will be a work in progress.

 + Small revamp of the System configuration to add a "Networking" category
   as the Configuration column is getting cluttered and will be moreso as I
   add in several new options that are planned.

 + Configuration now allows many of Mystic's text-based control files to be
   edited within the configuration using the new text editor.

 ! Message and File group editors were not assigning a new Unique ID to the
   group when pasting.

 ! Fixed a bug during graphics detection in Linux where Mystic would still
   show ANSI codes until after the graphics prompt was displayed.

 + New Python function "mci2str(code)".  This function returns the value of
   an MCI code, where code is the two digit MCI code.  For example:

      writeln("User: " + mci2str("UH"));

 + New Python procedure "gotoxy(x,y)".  This locates the cursor to the X
   and Y position if the user has ANSI graphics.  If you supply a 0 for
   either value it will be replaced by the current cursor position.

 + When snap_new is enabled in the Index message reader, Mystic will now snap
   to a base with new messages after a CTRL+U.

 + Renamed the configuration themes to "3D ANSI" and "Shareware BBS" and
   updated the cfgroot1.ans file in DATA slightly.  If you want to have the
   Shareware BBS theme look as its intended, replace your old cfgroot1.ans
   with the updated one from a fresh installation.

 + Pre-alpha versions of Mystic are now compiled with full debugging
   information.  Binaries will create a <program name>.mem file in the
   directory where it exists which could help debugging if a crash occurs.

   As a result of this change, the size of the binary files will be huge in
   comparison up to around 10 times the normal size.  Alphas will still be
   compiled in "release" form.

 + MYSTIC.DAT and USERS.DAT are no longer linked together, so if they are
   separated the user number generator will not generate bogus numbers.  The
   downside is it will take longer to save a new user account.

 + MUTIL now has a function to sort files in file bases [FileSort] replacing
   the similar function in MBBSUTIL.  See the default mutil.ini for more
   sort options.  The sort only works for bases that contain up to 250,000
   files but this can be easily expanded if anyone ever hit that limit.

 + MBBSUTIL has been removed from Mystic BBS and should be deleted.

 + Mystic's text editor is now available in the System Configuration in the
   Other section and will allow loading and editing of any text file.  Keep
   in mind that it has some limitations.  Raw tabs will be converted to 8
   spaces, character 12 will be escaped and represented as ^L while character
   27 will be escaped as ^[.  Any occurance of these will be converted back
   upon saving, with the exception of raw tabs which will remain as spaces.

 + New command line option for mystic: -text <filename> while open the text
   editor from the command line.  If <filename> is supplied it will open that
   file otherwise it will create an empty buffer.  IE:

      mystic -text mytext.txt

 + All SysOp menu commands (that begin with a *) now have an optional data
   parameter "/nopw" which will tell Mystic not to ask for the SysOp password
   prior to executing the command.

 + EchoMail Node editor now uses a paged style form similar to the user editor
   instead of opening up various boxes.

 + New Menu command: *1 Edit text file.  This command's optional data should
   include a filename in which to edit.  If the file does not exist by default
   the editor will not execute.  The user cannot open any other text files
   unless the "/open" parameter is supplied.  If /open is passed then Mystic
   will start with an empty buffer if a filename is not given (or doesn't
   exist) and the user will be allowed to open any file on your drive as well

 ! Color editor and access flag editor were not using the configuration theme
   and instead were always using 3D ANSI.  This has been fixed.

 + Use Passive mode is now defaulted to Yes when creating new QWK Network and
   FTN BY FTN client.

 + Added two new Configuration themes: Mono Pink and Mono Blue.  You'll need
   to copy cfgroot2.and and cfgroot3.ans to your DATA directory from the DATA
   directory of a new installation.

 + New command line option for mystic: -ansi <filename> while open the ANSI
   editor from the command line.  If <filename> is supplied it will open that
   file otherwise it will create an empty buffer.  IE:

      mystic -ansi text\gj-glue1.ans

   The ANSI editor can load display files with color codes from PCBoard,
   Wildcat, Mystic's pipe codes, and ANSI.  The editor can save in ASCII or
   Pipe Code or ANSI and includes variable line length saving for ANSI files
   as well as some display options that can be set specifically to Mystic
   BBS.

 + Mystic's System Configuration > Other tab now has an "Text Editor" option
   which will open up the Text editor.

 + Mystic's System Configuration > Other tab now has an "ANSI Editor" option
   which will open up the ANSI editor

 + Mystic's Theme Editor now has a function for "Templates" which will open
   up a listing of all .ini files in that theme's text directory.  When one
   of those files is selected, Mystic will open its text editor.

 + Mystic's Theme Editor now has a function for "Display Files" which will
   open up a listing of all .a?? files in that theme's text directory.  When
   one is selected, Mystic will open its ANSI editor.

 + New Menu command: *2 Edit ANSI file.  This command's optional data should
   include a filename in which to edit.  If the file does not exist by default
   the editor will not execute.  The user cannot open any other ANSI files
   unless the "/open" parameter is supplied.  If /open is passed then Mystic
   will start with an empty buffer if a filename is not given (or doesn't
   exist) and the user will be allowed to open any file on your drive as well

 + The beginning of Echomail node security is here!  The easiest way to think
   about how this system works is to relate an Echomail node to the way
   security works for a user in your BBS.  Each node will have a security
   level, access flags, and can be a member of many Echomail groups (up to
   65000 echomail groups can be defined).

   Different functions throughout the echomail system will eventually have
   "Echo ACS" strings which work just like the user ACS strings that we're
   familiar with.  For example, you might have "Hatch File EACS" in a file base
   where you could say that you wanted only echomail nodes within a particular
   group to be able to hatch files, or a particular security level or access
   flag(s), or even by static echomail node ID.  For example:

      Hatch File EACS: g2|s255|fH|u10

   The above would say that any echomail node that is a member of Echomail
   group 2, OR any node that has a security level of 255 OR any Echomail node
   that has flag H can hatch files to that file base.  The Echomail node
   with the ID of #10 can also hatch.

   This is a very powerful system for managing an Echomail network, and EACS
   strings will be added to various functions in the future as seen fit.

 + New Python command: msg_delete(handle).  This deletes the current message
   as returned by msg_first or msg_next

 + Echomail Node editor will now check for any other active nodes with the
   same configured adddressed whenever it saves an echomail node.  If it finds
   a conflict it will pop up a message warning you of the conflict.

 + New ACS value: "OS" will be true if the user is connected by a secure
   connection to the BBS (ie SSH).

 ! Fixed a JAM file handle leak in the NNTP server.

   <ALPHA 1.12 A37 RELEASED -- Jan 1, 2018>

1.12 Alpha 38

 ! Fixed an issue that caused MPL programs to crash

   <ALPHA 1.12 A38 RELEASED -- Jan 1, 2018>

1.12 Alpha 39

 + New Python command: backspace (number, destructive).  This function sends
   (number) backspaces and if (destructive) is True, then it will also
   delete the character.  If False it will only move the cursor backwards.

 + Record data changes for user database:

     - First on and last on dates are now stored in Unix timestamp format.

     - Expire, last password change, and last e-mail validation dates now
       use julian day number

     - IP field extended to support IPV6, host extended to 80 characters

     - Vote tracking extended from 20 to 99

     - Added space for variable iteration PBKDF2-HMAC-SHA512 encrypted user
       passwords.

     - Added User country field for historical storage

     - Local QWK Path is now split into Local QWK Path and Local REP Path

 + Record data changes for message base database:

     - Expanded name to 60 characters

     - Removed Sponsor field

     - Added Read EchoACS and Post EchoACS

     - Created date changed from packed DOS to Unix timestamp format

 + Record data changes for file base database:

     - Extended name to 60 characters

     - Extended echotag to 40 characters

     - Added Passthrough EchoACS

     - Created date changed from packed DOS to Unix timestamp format

 + Record data changes for events database:

     - Added a unique ID to each event

     - Added OSType attribute to each event

     - Added new statistical tracking attributes

     - Removed Node number from BBS type event

     - Added field to support enhanced semaphore event system

 + Record data changes for servers database: Added more space for more server
   types and options.

 + Installation program will now question the installer at the beginning to
   help determine the local console codepage on Linux platforms.

 + Mystic message searching now allows full logical boolean searches along
   with order of operations.  The following tokens are used:

     & = AND
     | = OR
     ! = NOT

   Parentheses can be used to group results.  If you want to search for a
   single word or user you can still just type in the word, but otherwise
   you now have the options to do searching like:

      (g00r00 & released) | pre-alpha

   This would return any message that contained both g00r00" AND "released",
   OR it contained the word "pre-alpha"

   Searches are case insensitive and will search the From, To, Subject, and
   message content (excluding kludge lines).

 + New door command line code %C.  This is replaced by the user's current
   codepage as either "CP437" or "UTF8".

 + Mystic will now track the country detected during country blocking within
   each user's session.  A new MCI code "UO" will return the user's country
   of origin as determined by the country blocker in MIS.

 + Mystic's installation file install.exe can now be ran to copy over your
   binary files for you by command line:

     install replace <root Mystic path>

   Windows seems to be blocking this from running on my Windows test system
   for some reason, so I am looking into a way around whatever it is doing.
   You may need to rename it to something like "temp.exe" in Windows to get
   this to work :\

 + ANSI editor now has a "CRLF at EOF" which always defaults to Yes.  If this
   is Yes, Mystic will save a CRLF at the end of the ANSI file so that the
   cursor moves to the next line.  If No, then Mystic will not.

 + ANSI editor now shows a "File saved" confirmation box after saving.

 + ANSI editor now retains the changed filename between save dialog boxes

 + CTRL+X will now exit the ANSI editor, asking to save if the file has been
   changed first.

 + When in the full text and ANSI editors, the delete key will now allow files
   to be deleted within the Open file dialog box.

 ! Mystic was not properly handling MSGID fields created by Synchronet when
   replying to Echomail via Netmail

 ! Mystic will no longer refuse Netmails that use the Synchronet-style MSGID

 ! Bugfixes to ANSI editor save functions, particularly when saving without
   clear screen enabled.

 + New ANSI editor buffers will now default to saving with "Clear Screen Yes"

 ! FTP server was showing QWK packet when logged in as Anonymous

 + Mystic now has a new feature which can be enabled in the File Base Settings
   called "Download FTP".  When this is enabled to Yes, Mystic will ask the
   user if they'd like to download their queued files via an FTP link instead
   of using a file transfer protocol.

   The FTP link will contain a virtual directory that contains all of the
   files in their batch queue, and will expire after 1 hour.  The user can
   use their web browser or FTP client to connect to the FTP URL and list
   and download the files that they queued on the BBS.  Access enforcement
   and statistical tracking will be applied via the virtual FTP directory
   just as it would if the user was downloading the file from the BBS.

   This feature requires that Mystic's FTP server is enabled and properly
   configured, and that Anonymous FTP access is enabled in the Server
   settings.  This means proper firewall configuration and valid BBS domain

   Four new prompts will go along with this.  If you are using the default
   prompts you can simply copy over the default.txt to your data directory,
   but if you have modified the prompts then you'll need to add these new
   prompts into your default.txt and any other themes you use.  They are
   located in the upgrade.txt or the default.txt from a fresh installation.

   An HTTP equivalent will be enabled in a future build.

 + MIS now has a basic HTTP server.  The server can be created in the server
   editor within the configuration.  A webroot path must be defined, which
   points to a directory where your website files and configuration will
   exist.  For example, if you set webroot to c:\mystic\webroot\ then you
   will need to create two subdirectories under it (cfg and www):

      c:\mystic\webroot\cfg\
      c:\mystic\webroot\www\

   In the www folder will be where you place your website files.  The CFG
   folder will hold various configuration values for the web server in the
   future.  Note this is a very barebones server at this point only really
   capable of serving basic websites, but I intend to work on it further as
   I find time.

 + ANSI editor now has block options.  CTRL+B can be used to select a block
   of text to be centered on.

 + ANSI editor now has a block option for filling a block with a character,
   an attribute or both.

 + ANSI editor now has a block option to select a block and center text found
   within the selected block (using the center of the selected block as the
   center point)

 + Event system will now recalcuate the event state every 10 seconds, this
   has been increased from 5 seconds in order to reduce load of an updated
   semaphore system

 + The "Semaphore" event system has been enhanced to allow specifying boolean
   logic of semaphore files that must exist (or not) to trigger an event. A
   new field has been added to define which semaphore files should be removed
   when the event is ran.  The usual boolean evaluation tokens that are used
   in ACS, message searching, etc, all apply here as well: () to define order,
   !=NOT, &=AND |=OR.   An example usage might be:

      Event Type: Semaphore
       Semaphore: (echomail.in|netmail.in)!fidopoll.bsy
      Kill After: echomail.in|netmail.in

   The above example says to trigger the event if echomail.in OR netmail.in
   exists but NOT if fidopoll.bsy exists.  The result would be that the
   command line would run when there is incoming net/echomail but it'd also
   wait for fidopoll to finish running (if it is) before kicking off.

   The Kill After field says that when it runs it should delete echomail.in
   and netmail.in.  Each file specified here should be separated by a pipe
   character (|).

   For existing systems, the upgrade program will automatically populate the
   "Kill after" field with the currently configured semaphores but for new
   events you'll now need to define which semaphores to delete when it runs.

 + Semaphore events will now delete the semaphore files when it executes
   instead of at the time the semaphores are detected.

 + Semaphore events now dynamically update their "run state" until the point
   in which they execute.  This means that if a semaphore event triggers but
   another event is running which causes it to be flagged "Run next", it will
   continue to evaluate the semaphore files up until the moment it runs. If
   the state of those semaphores changes between being flagged as Run Next and
   actually executing, the event will detect it and adjust itself accordingly.

 ! Fixed a bug in the socket code that could sometimes cause a lost connection
   to not be detected if it happens while sending data to the client.  This
   could be a major cause for those who've had some "ghost node" issues.

 ! Who's Online was not pausing when the BBS had enough nodes to fill up
   multiple pages.

 + NodeSpy now has an option to connect via IPV4, IPV6, or to default to
   either V4/V6 and then fallback to using the other if it cannot resolve
   the address.

 + Echomail nodes can now be configured to default to resolving via IPV4 or
   V6, with a fallback to the other one if the address cannot be resolved.

 + FidoPoll will now attempt to use IPV6 if it is available and then fallback
   to IPV4 when connecting to unsecure nodelist via a nodelist lookup.

 + MIS event status will now display the date and time when the event was
   last executed as well as the last result returned from execution.  If you
   are a A39 pre-alpha tester, note that any events you've created in the
   Event editor with A39 may have to be recreated for this tracking to work
   because the "Event ID" was always getting set to 0 in earlier builds.

 + SENDMAIL now has an IPType similar to those added to Fidopoll, echomail
   nodes, Nodespy, etc.

 ! Mystic BINKP should no longer fail CRAM-MD5 negotiations when a BINKP
   option is listed after the CRAM-MD5 handshake in the options frame.

 + Mystic FIDOPOLL FTP send functions will now log FTP session data to the
   log file, similar to what it does with BINKP.

 + Mystic FIDOPOLL FTP will now automatically prepend a / to a directory if   it is not configured in Mystic's echomail node configuration with a slash
   it is not configured in Mystic's echomail node configuration with a /

 + QWKPOLL will now log to "qwkpoll.log" in the log files directory.

 + QWKPOLL will now log all FTP client/server exchanges in qwkpoll.log

 + MIS will now attempt to detect any ghost nodes and will reset the node
   data under many different circumstances.  If this happens, it will be
   logged in mis.log with an explaination as to why it was assumed to be
   a ghost node.  This combined with other recent stability improvements
   should help quite a bit with long term uptime of the terminal nodes and
   servers.

 + Echomail node configuration: Echomail node address input now is a single
   input instead of splitting out zone, net, node and point into their own
   fields.  This is done to make a little more room on the form for other
   options.

 + Echomail node configuration: Nodes now have a "SysOp Name" field.

 + Mystic Python has a new function: Delay (milliseconds) causes the problem
   to wait for a specific number of milliseconds.

 + All Mystic executables will now either display the compiled version
   date/time or have a -ver/-version option to do the same.

 + New menu command: MF (View draft message posts).  This command allows
   users to view and resume any saved draft message posts.  If the user
   has no drafts a simple message will be printed saying there are no
   saved drafts.

   Drafts are automatically saved when a user runs out of time, gets
   disconnected for inactivity or loses/drops connection in the middle of
   posting or while replying to a message.  If Mystic has any sort of error
   while saving the message, it will also creat a draft of the message for
   the user.

   If the optional data of /SCAN is supplied, Mystic will check to see if
   there are any drafts, and prompt the user if they would like to
   review their saved drafts ONLY if they have drafts.  If they do not do
   drafts, the command will simply do nothing.  Ideally you could put this
   somewhere during your login process, as the new default install does in
   prelogin.mnu

   Six new prompts (532-537) go along with this. If you are using the default
   prompts you can simply copy over the default.txt to your data directory,
   but if you have modified the prompts then you'll need to add these new
   prompts into your default.txt and any other themes you use.  They are
   located in the upgrade.txt or the default.txt from a fresh installation.

 + New ACS command "OD" returns TRUE if the user has any draft message posts
   saved.

 + New MCI code "MF" shows the number of draft messages saved for the current
   user.

 + Posting a message now no longer enforces group requirements when evaluating
   the "PostACS"

 + The message editor now has a "Save as draft" option from the command menu.
   This means you will need to add that command to the menu if you use a
   custom template for your message editor, otherwise replace msg_editor.ini
   with the newer one from the installation.

   See upgrade.txt for instructions on adding the command or use the default
   msg_editor.ini as a guideline.

 + Two new Python functions: pwrite and pwriteln.  These work just like the
   write/writeln or rwrite/rwriteln except they only resolve pipe color codes
   and not all MCI codes.

 + Echomail ACS is active.  Note: YOU MUST BE USING MUTIL TO PROCESS ECHOMAIL
   AND .TIC FOR THIS SYSTEM TO WORK.  Mystic cannot apply security to third
   party tossers.

   This system is just like User access system except that it applies to
   echomail nodes.  Each echomail node has its own security level, group
   memberships (to echomail groups) and a set of acess flags.  The following
   commands are available within EACS:

      s<level>  : Echomail node must have a Security Level greater than or
                  equal to <level>
      g<number> : Echomail node must be a member of Echomail group ID equal
                  to <number>
      f<flag>   : Echomail node must have flag <flag> which is a letter
                  between A to Z.
      u<number> : Echomail node must have a unique ID of <number>.  This
                  allows security to be applied to specific nodes (ID is
                  shown in echomail node editor).

   Just like user ACS, Echomail ACS can also use parenthesis and boolean
   evaulation.

 + Echomail ACS has been activated for message base subscribing/reading. A
   new field in each Message base configuration called "List EACS" defines
   the ACS requires for an echommail node to be able to see, subscribe, or
   unsubscribe to the area via AreaFix

   Hubs can still manually link a base to a node regardless of security, so
   for example if you wanted to force nodes to always carry a specific echo
   area, you would give them the base and then set the "List EACS" to an
   access they do not have (or even use % which is "never" in ACS terms). With
   this setup in place, the node cannot add or remove the area, they can only
   perform rescans.

 ! When hatching/tossing files, MUTIL will now properly randomly generate a
   random 8 letter .tic filename if one already exists of the same name as
   the archive.

 + The FU (File upload) menu command now has a new optional data command
   called "/current".  If this option is specified, Mystic will attempt
   to upload to the current file base even if a specific file base has been
   configured for uploads.

 + The GH and GI (Goodbye and Hang up Immediately) menu commands have a new
   optional data option.  If "/RECYCLE" supplied, Mystic will log the current
   user out and restart the session as if the user just connected to the BBS.

 + The XL (Matrix Login) command now as a new optional data option.  If /FULL
   is supplied, the typical Matrix login will be immediately skipped and the
   user will be presented the standard login process.  This is intended to
   allow people to use the Matrix login for things other than a Matrix-style
   log in.

 + MUTIL [ImportEchoMail] now has a new option: default_rescan.  This option
   allows the SysOp to define the default parameters used when a downlink
   requests a %RESCAN on all message bases.  In the past this defaulted to
   "R=250".  MUTIL will continue to default to that value if it is not defined
   in the .ini file, otherwise it will adopt whatever is defined.  Be sure to
   define a valid command otherwise RESCAN will not work.  See the default
   MUTIL.INI for more information.

 + MUTIL now has a new option under the [General] section: "logcache".  This
   can be a true or false value.  If true, MUTIL will cache the log file
   meaning it will write the log file in chunks of "8KB" instead of every
   line being written.  This is the default and HIGHLY recommended setting for
   MUTIL. If set to false, MUTIL will physically open the log file and write
   each individual log line to the file and then close it.  Setting this to
   false will most likely significantly reduce performance.

 + Mystic AREA/FILEFIX wasn't properly reporting +1 to Netmail when processing
   a request.

 ! Fixed a bug in Areafix RESCAN when using the R= command, caused by changes
   to my JAM code back when I was optimizing the statistical calculation for
   the Index reader.

 + New MPL function DateUnix returns the current date/time in Unix format

 + New MPL function DateU2D (unixdate): Converts <unixdate> to a DOS date

 + New MPL function DateD2U (dosdate): Converts <dosdate> to a Unix date

 + AreaFix responses now list the message base name along with the echotag

 + AreaFix rescans now show the total messages exported

 + AreaFix %LIST command now has an option parameter to perform boolean
   capable searches on the echotag and message base name.  These work just
   like msg searches with parenthesis (&)AND (|) OR (!) NOT functionality:

      %LIST BBS            - List areas that contains "BBS"
      %LIST BBS!Renegade   - List areas that contains "BBS" but not "Renegade"

 + AreaFix now has a "%ALL" command.  Using "%ALL" or "%+ALL" will add all
   areas the node has access to.  Using "%-ALL" will remove all nodes the
   area has access to.  The command has an option second parameter which will
   perform a boolean capable search on the echotag and message base name:

      %ALL                 - Add all bases the node has access to (but not
                             subbed)
      %-ALL                - Remove all bases the node has subscribed to
      %ALL BBS!Renegade    - Add all that contain "BBS" but not "Renegade" in
                             the echotag or base name
      %-ALL BBS!Renegade   - Remove all bases that contain "BBS" but not
                             "Renegade" in the echotag or base name

 + File Bases now have an "List EACS".  This Echomail ACS works identically
   to the Message Base version, allowing hubs to define which nodes have
   access to list, subscribe, and receive get files from an echoed file base

 + FileFix %LIST function now has an optional second parameter to perform
   boolean searches in the same was as Areafix.

 + FileFix now has an %ALL function that mimics the functionality of the
   Areafix equivalent.

   <ALPHA 1.12 A39 RELEASED -- April 20, 2018>

1.12 Alpha 40

 + Door command lines now have %R which will return the user name without
   underscores in the name.

 ! Fixed a bug where groups could be created with a duplicate ID.  You may
   wish to double check you groups to make sure none of them have the same
   ID.

 ! Fixed a bug in Python GotoXY function that would cause a crash when using
   it.

 + The MUTIL ImportNA function now allows a "use_ansi" default value to be
   defined when creating message bases.

 + The MUTIL Echomail Import function now allows a "use_ansi" default value
   to be defined when automatically creating message bases.

 + The MUTIL ImportMessageBase function now allows a "use_ansi" default value
   to be defined when creating message bases.

 + MIS FTP now logs when a SysOp deletes a file from a filebase via FTP

 + MIS FTP/NNTP/SMTP/POP3 servers now have a better idle/timeout system which
   will cause the server to shutdown more gracefully when exiting MIS with
   active connections.

 + New menu command: M! This is a rewrite of the message area index reader
   rebuilt to work identically to the file base index lister.  See the
   msg_index.ini file for more details.  Command line option is the template
   name or default to msg_index.ini if none is specified.  I am not removing
   the old one just yet so that people have time to adapt to the new version
   and to test it for issues, but please note the old one will likely be
   replaced by this new one eventually once the features are all done and
   tested.

 + New MPL variable: UserPosts contains the number of posts a user has made

 + New MPL variable: UserDLs contains the number of downloads user has made

 + New MPL variable: UserULs contains the number of uploads user has made

 + Mystic now has a new User Editor which doesn't look a whole lot different
   than the old one, except that it incorporates some newer ideas that were
   introduced into the Echomail Node editor that makes jumping around between
   pages of information easier.  One major thing to note is that you can no
   longer view user passwords and can now only "reset" user passwords.

   Like the other page-based editors you can scroll from the first or last
   item to change page, use the tab key, the pageup/down keys, the left
   and right arrows, or enter a page number directly to shift between pages.

 + Mystic now has a password policy in System Configuration where the minimum
   password length can be set along with number of required capital letters,
   numbers, and symbols.  It is highly recommended that the minimum password
   length is set to at least 7 characters.  Some default prompts have been
   updated to support this new feature: 18, 419, 420. If you have custom
   themes, you should take a look at the new defaults and consider updating
   your custom prompts as well.

 + Mystic now allows the option to store passwords in case insensitive
   cleartext and case insensitive hashing using industry standard methods for
   password storage.

 + Mystic now allows passwords to be stored using PBKDF2 with SHA512-bit
   hashing at variable configurable iterations.  What does this mean?  The
   biggest benefit is that when enabled, Mystic will never store a user's
   password anywhere in the BBS system.  This system is the same system used
   for Password Managers such as LastPass, 1Password and operating systems
   such as MacOS.  In fact, with its variable iterations Mystic could be
   considered to be more secure as those products in terms of cracking a
   user's password hash.

   Two new options are added into the Password Policy options, the first is a
   password storage method which has three options:

      ClearText Case Insensitive       (This was the legacy storage method)
      ClearText Case Sensitive
      PBKDF2 SHA512 Hash               (This is also case sensitive)

   It is highly recommended to use password hashing and stop using cleartext
   passwords.  With password hashing enabled, a person could be given your
   users.dat and they still would not be able get a user's password.

   The second option is VERY important when using PBKDF2 and that is the
   number of iterations the process will use when hasing a password.  The
   default value is 1000 and may be considered a little low in terms of
   enterprise level password storage but it works at a reasonable speed for most
   systems.  In general, the higher the number of iterations the more secure it
   is, but the longer it will take for Mystic to store or check a password.
   Setting this value to 10,000 on an original Raspberry Pi for example may
   cause Mystic to take 10+ seconds to store or check a password and for many
   that may be too slow.

   It is recommended that it is kept at 3000 or lower for performance reasons
   unless you know what you are doing.  Even at this level PBKDF2 with a 512
   bit hashing system is more secure than any other BBS software today.  If
   you find the delay for 1000 is too short you can adjust the value but just
   beware that if you change hardware someday, those values still remain...

   The way the system works is that a user's password is stored in the format
   configured at the time their password is set, including the iterations. The
   password remains stored in this format even if you change the storage method
   until the user changes their password or you reset it using the user editor.
   It is important that you do not set the iteration level too high for the
   hardware you are using to run your BBS now or in the future.

 + Mystic user passwords have now been expanded to 25 characters maximum.

 + Mystic now allows passwords to be reset via Internet e-mail.  This option
   can be enabled in System Configuration -> Password Policy and will require
   that the SMTP sendmail/relay options are configured in the Server General
   Options tab.  The user must also have a valid e-mail address assigned to
   their user account.

   If enabled, the user will be sent an e-mail with a randomly generated code
   and then prompted by the BBS to enter the code.  Upon entering the code
   the user will be prompted to change their password and finally logged into
   the BBS as if they had typed their password in correctly.

   8 new prompts have been added to the themes to support this new feature
   most having 4 promptinfo MCI codes active: &1=min length  &2=min caps
   &3=min nums  &4=min symbols.  These new prompts (538-546) will need to
   be added to your custom themes if you have them.  See the upgrade.txt
   for more information.

 + New Configuration theme: Turbo Vision.  Not really a favorite of mine,
   but one of the goals of this theme option is for nostalgia preservation
   and the TurboVision look was widely used in the BBS scene.

 + Mystic's built in RAR archive functions should now work with newer RAR5
   format RAR files.  If you encounter any issues viewing a RAR file please
   e-mail me a link to download the same file or the file itself so I can
   take a look at it.  Keep in mind Mystic does not allow you to view
   encrypted archives.

 + Changed the e(X)it command in the text editor to (Q)uit to match that of
   the ANSI editor.

 + New ACS function "OV" returns true if the user has validated their current
   e-mail address.

 + Email address fields have been expanded to 60 characters, input field
   length by default is 40 characters (up from 35).

 + Mystic will now validate that the user enters a valid e-mail address
   format when prompting for e-mail address during new user application and
   when editing user information.  Two new prompts have been added that will
   be displayed when they enter an invalid e-mail address: #463, #486.  You
   should update your prompts based on the new defaults.

 + New menu command: -V (Validate e-mail address).  This function will send
   a code to the user's e-mail address and then prompt them to enter it on
   the BBS.  Upon entering the code successfully, the "OV" ACS command will
   begin to report true.  If the optional data field contains a security level
   Mystic will also update the user's security profile. The OV ACS can also be
   used in order to perform any number of actions if validation is successful.

   New prompts have been added to support this: #547-#552.  You will need to
   add these if you have custom themes.

 + Mystic now supports CNET Control-Y color codes.  These work in file
   description .DIZ importing, in file descriptions, in message reading, in
   Mystic's file/ANSI viewer and ANSI gallery, and Mystic's ANSI editor can
   now load CNET color coded files.  Thanks to NuSkooler for initial info
   about the color codes.

 + New Python function: "logerror(string)".  This creates an entry into the
   global error log of the string passed to it, and also creates an entry in
   the current node log as well.

 + The group editors now have a Move function that allows repositioning the
   order of groups.  Simply Copy a group and them move to where you want to
   place it and select Move.

 + The file base editor now also has a move function.

 ! When tagging a bunch of bases in the message base editor and selecting
   Sort, it was possible to press ESCAPE and wipe out your message base
   configuration entirely.  Fixed.  Sorry to anyone affected by this.

 ! Fixed a bug in the global message base editor where setting the Max Msgs
   value could cause the value to get garbled when updating the bases.

 + Two new options to the GD menu command (Display a file):

      /MCI   - If this option is supplied, Mystic will not filter out any MCI
               codes including pipe colors.

      /ABORT - If this option is supplied, Mystic will not allow the display
               file to be aborted.  By default they are allowed.

 + Mystic's SMTP sendmail function now supports opportunistic SSL via the
   TLS v1.2+ protocol.  Combined with CRAM-MD5 authenication, this provides
   encryption of both the password handshake and the overall session.

 + Message Box MCI codes no longer automatically pad the header text with a
   space on each side. This makes it consistent with other box functions and
   allows a bit more flexibility.

 + MUTIL echo import now gives a more meaningful message when a PKT password
   is defined and there is no echomail node configured for the origin address

 + Mystic BINKP server and FIDOPOLL now support opportunistic SSL (TLS v1.2+)
   using a proprietary extension of the BINKP protocol.  This means that it
   will only work with other Mystic BBS clients and servers, but I do plan
   to document the extension and send it to the authors of other mailers in
   hopes that it can be standardized.

   BINKP server settings now have a "Use SSL" setting which can be set to
   one of three settings:

      No     : BINKP server will not offer SSL extension at all
      Yes    : BINKP server WILL offer SSL extension optionally
      Forced : BINKP server will refuse all connections not using SSL

   EchoMail Nodes now have a similar setting which will be used when polling
   for new mail:

      No     : FIDOPOLL will not use SSL extension at all
      Yes    : FIDOPOLL WILL use SSL if the server supports it
      Forced : FIDOPOLL will refuse to exchange mail with a server
               unless it supports SSL

 + For those of you who downloaded the A40 pre-alpha before Dec 16th, you
   will have password issues.  To fix this you can copy over the latest
   upgrade.exe and place your A39 users.dat into DATA and execute "upgrade
   password".

 + Message bases with an origin line set to a blank will now inherit the
   default value set in System Configuration > Message Settings.  This is how
   it was supposed to work but it wasn't.  The origin line will now also be
   blank when creating a new message base, instead of setting the value to
   the current default.  This also includes MUTIL import/create functions.

 + The random origin line selection engine (@ORIGIN=) will now be processed
   if it is defined in the default origin line.  In the past it was only
   processed when defined for an individual message base.

 ! Mystic will no longer make echomail bundles with a bracket in the filename
   extension which could happen in a certain circumstance.

 ! Fixed a bug where Mystic was adding a point to the INTL kludge origin/dest
   addresses when dealing with point systems.

 + Message Base editor now has a /A command to select all bases.

 + File Base editor now has a /A command to select all bases.

 + File Base editor now has a /G Global Editor similar to the Message Base
   editor

 + Echomail nodes now have an "Encryption Key" option.  When this option is
   set to a non-blank value, Mystic will encrypt all of the contents of
   Netmail messages to this node with an AES-256 encryption.  This completes
   a fully encrypted echomail solution as both transport and private messages
   are secured.

   This is done in a way that is completely transparent to unsupporting
   systems, meaning that you can still route netmail through systems and they
   will not harm the encrypted netmails!  The encryption also hides the
   message subject, so when combined with Area/Filefix passwords will no
   longer be readable. You must have Cryptlib installed for this to work.

   The other echomail node must of course have the same key configured for
   your node in order to decrypt the netmail when it arrives.  This works the
   same way as any other password setting in echomail nodes.

   When routing Netmail, Mystic will intelligently re-encrypt the message
   between routing points when possible.  In other words if you have a point
   system who sends from 555:1/2.1 to 555:1/1 but is routed through 555:1/2,
   Mystic at 555:1/2 will know that it has an encryption agreement between
   both 555:1/2.1 and 555:1/1 so it will decrypt the message from 555:1/2.1
   and then reencrypt it for 555:1/1 before routing it.

 + Mystic Area/Filefix will now accept commands that start and end with a
   percentage sign (as opposed to just starting with) so: %LIST and %LIST%
   will work, for example.

 ! Mystic wasn't properly using UTC time when adding the @VIA kludge while
   routing Netmail (it was using local system time).

 ! Reviewed Netmail routing with point systems and corrected a couple little
   bugs with addressing.  This will hopefully have no negative effect on any
   other behavior.

 + Mystic BINKP now sends the local time and time zone information whenever
   it connects to another BINKP server.

 + MUTIL MsgPack now no longer users the Mystic temp directories while
   packing message bases.  Instead, it creates temp files in the same
   directory as the message base.  This should allow MsgPack to continue to
   rename files when message bases are stored on different devices than the
   root Mystic directory.

 + New MPL function to go along with new password engine:

     Function CheckPW (PW: String) : Boolean;

   This function checks the supplied PW against the current loaded User
   and returns true if the password matches or false if it does not.

 + New MPL function to go along with new password engine:

     Procedure SetPW (PW: String);

   This procedure sets the password for the currently loaded users (ie
   the User storeed in the current User variables)

 + New MPL function to go along with new password engine:

     Procedure ValidPW (PW: String) : Byte;

   This procedure checks the password passed in PW against the configured
   password policy and returns a result depending on its status:

     1 = Password does not meet min length
     2 = Password does not meet min cap letters
     3 = Password does not meet min symbols
     4 = Password does not meet min numbers

   <ALPHA 1.12 A40 RELEASED -- Dec 25, 2018>

1.12 Alpha 41

 ! Fixed the broken SSH that creeped its way into A40.

 + Changed the date format in message quoting to "DD MMM YYYY"

 ! MUTIL echo export should no longer toss messages back to the origin node

   <ALPHA 1.12 A41 RELEASED -- Dec 27, 2018>

1.12 Alpha 42


 ! Reverted back to Free Pascal 3.0.2 and magically a lot of the problems
   have gone away with the Unix versions.

 + Increased the BINKP max file queue per session to 200 files, up from 100

 + Mystic BINKP now sends the build date, time and operating system with
   bit level as part of the welcome

 + Mystic BINKP now sends the queue size (# of files and total bytes) after
   authentication and before starting to transfer files

 ! Fixed some issues that were causing IPV6 servers and clients to act
   differently in Unix based systems.

 + Prompt #464 message quote text now has &4 MCI code which is replaced by
   the time that the original message was written.

 + Mystic will now log to the node log if a user attempts to post to a
   message base but does not have access to do so.

 + Mystic will now log Python errors to the BBS node log and the Mystic
   global errors.log

 + MUTIL now has a function to export a FILEBONE.NA file based on the file
   bases.  A new [Export_FILEBONE.NA] stanza has been added to the INI file
   for more information see the default mutil.ini file.

 + MIS servers now show "Server busy" instead of "BUSY" when a connection is
   received when all client slots are in use.  "BUSY" will still be shown by
   Mystic.

 + New option for each Echomail node: Crash Limiter.  When FidoPoll sends
   files via BINKP it will skip queueing any files for sending larger than
   this value.  The value is defined in kilobytes.

 + MUTIL now allows the loglevel to be defined in each specific stanza.  If
   the loglevel is defined within a process' stanza, then that loglevel will
   override the value set in the general stanza just for that process.
   
    <ALPHA 1.12 A42 RELEASED -- Feb 2, 2019>

1.12 Alpha 43

 + Mystic now has two new door MCI codes:

     %A - Returns the user's realname with spaces replaced with underscores
     %B - Returns the user's realname

 + Expanded the BBS domain from 25 to 45 characters.

 + Mystic will now inform you if you try to edit a message that has already
   been sent.  It already informs you if the message was sent while you were
   editing it (which tends to happen if you have messages set to send on save
   as opposed to logoff).

 + Mystic's private user to user chat system now has a split screen chat
   option.  A new template userchat.ini and userchat.ans are required now to
   be accessible by your theme otherwise your user to user chat will not
   work.  See the default installation for these new files.

 + Mystic now has Mystic-DOS, a built in command shell console that allows
   for various disk and BBS functions within a command shell interface that
   mimics both Bash and MS-DOS/Windows shell commands.  Disk management,
   executing MPL and Python scripts, snooping and chatting with users on
   other nodes, editing ANSI and text files, etc.

   A new menu command *D has been added but it cannot be executed unless the
   user has a security level of 255.

 ! Fixed a bug in Mystic Python that would cause a crash whenever the
   msg_open function failed to open or create a message base.

 ! Fixed a bug in Mystic wildcard match functions and increased speed by a
   good amount.

 + (when country blocking is enabled)Mystic now logs the user's country in the node log along with their IP
   and hostname

 + The install program now has an "extract" function to go along with the
   replace function.  Type "install help" for more details.

 + MUTIL now has an AutoHatch function to automate periodic hatching
   of files from the file base.  See default mutil.ini for more information.

 + New SysOp menu command: *3 This allows a SysOp to snoop (watch) a user on
   another node.

 + You can now press CTRL-E when editing menu settings on the Display File
   field to open up the ANSI editor.

 ! In various places whenever a file rename or move needs to occur, Mystic
   will first try a fast move and if it fails, it will attempt to copy the
   file to the new destination and then delete the original.

 + When reading forced message bases, Mystic will now allow the user to quit
   reading if they've already read all of the messages.

 + Mystic Message Base and File Base editors now have an /U Unsubscribe option
   This command will automatically generate an Areafix or Filefix Netmail
   request to unsubscribe from a base (and option to delete the base after)

 + The Echomail node editor now has three new options in the / menu:

     1 - Send Areafix request to the selected node
     2 - Send Filefix request to the selected node
     3 - Send Netmail message to Sysop of the selected node

   All of these will allow you to quickly and easily contact an Echomail node
   to communicate with the SysOp or to add/remove message and file bases or
   anything else the Area/Filefix commands allow without having to fumble
   around with addresses and passwords!

 + System Configuration now has a log file viewer option in the Other menu
   next to the Text and ANSI editors.

 + New Menu command: *4 This opens the log file viewer

 + Text editor now has a (CTRL+J) Jump to Line number option

 + Text editor now has a (CTRL+W) Where function which allows full boolean
   line searching using paranthesis and &|! operators

 + Text editor now has a (CTRL+A) Again function which repeats the last
   Where function again

 ! MUTIL was not adding a NULL at the end of the last PKT when doing a rescan
   of message bases.

 + When importing and forward netmail, MUTIL will now allow an address to be
   defined, allowing Netmail to a certain name on the current setup to be
   forwarded to different name and/or network node.  See default MUTIL.INI for
   more information.

 + New menu command "UF" Edit Twit Filter.  This allows a user to edit their
   twit filter, which is a list of users whose messages will be automatically
   skipped when reading message bases.  Each user can define up to 50 users
   they wish to ignore.

 + MUTIL now creates and removes BUSY data before and after processing TIC
   files and hatches.

 ! Fixed a bug when using the save file to message menu command where Netmail
   messages were not properly being flagged as private.

 + The SysOp name in the EchoMail node editor can now have an address appended
   to it, and Mystic will send the message to that address when using the
   "NetMail SysOp" option.  So if the Echomail node address is 21:1/100 but
   when you use the Netmail to SysOp function you want to send it to 21:1/101
   instead because 1:/100 is a hub only, then you can set the SysOp name to
   "Avon@21:1/101" to override the address.

    <ALPHA 1.12 A43 RELEASED -- March 2019>

1.12 Alpha 44

 + New MPL variable: CfgDefTheme returns the configured default theme

 + New MPL variable: CfgTextFB returns the theme's text fallback theme

 + New MPL variable: CfgScriptFB returns the theme's script fallback theme

 + New MPL variable: CfgFallback returns true or false if default theme
   fallback is enabled for current theme

 + New Python CFG variable: deftheme returns the configured default theme

 + New Python CFG variable: textfb returns the theme's text fallback theme

 + New Python CFG variable: scriptfb returns the theme's script fallback

 + New Python CFG variable: fallback returns the themes' fallback setting

 + Updated default BULLETIN.MPS file to support scanning for bulletins in
   all theme fallback directories.

 ! MPLC was not properly scanning all directories recursively when -ALL was
   supplied.  Additionally, MPLC will now not attempt to compile a .mps file
   that is 0 bytes in size.

 + New Theme system has been implemented.  The default text, menu, and
   scripts directories in the System Configuration have been removed and
   replaced by a single Themes directory.  This directory specifies the root
   directory where all Mystic BBS themes are found Ex: c:\mystic\themes\

   THEME.DAT has been depreciated and is no longer used by Mystic BBS

   Theme prompts are no longer restricted to being 255 characters or less,
   they now have an unlimited length.

   UPGRADE utility will convert your existing BBS to the new themes structure
   for you so you do not have to do anything.

   Each theme itself now has a root directory that can be up to 20 characters
   in length, and consists of three subdirectories.  Each theme has a
   theme.ini in the root directory that contains various configuration options
   that can be configured by text editor or the Themes Editor.

   Each them can also have a prompts.txt which contains one or more Mystic BBS
   prompts.  Any prompts not in prompts.txt are loaded from the theme's
   fallback if one is specified, and ultimately the "default" prompt found in
   prompts.dat (new to Mystic BBS).

   Themes can now contain only the prompts that are actually customized instead
   of requiring ALL prompts to be in a theme's prompt file, and then it can
   fallback and pull inherited prompts or defaults.  This means that you will
   no longer have to update your prompts for every theme when new prompts are
   added or existing prompts that you haven't customized are changed

   Scripts and menus work the same as prompts do with the capability to fall
   back to another theme and/or ultimately the configured default theme if
   that feature is enabled.

   The directory structure looks like this:

      \mystic\themes                                - Root Theme directory
      \mystic\themes\default                        - Default theme directory
      \mystic\themes\default\theme.ini              - Theme settings
      \mystic\themes\default\prompts.txt            - Prompts (optional)
      \mystic\themes\default\text                   - Text/template files
      \mystic\themes\default\menus                  - Menus
      \mystic\themes\default\scripts                - Scripts

   There is no installation process for a theme as Mystic will detect them
   dynamically.  If you have a Theme and you wish to share it, all you have to
   do is ZIP up the theme directory (default as shown above) and give it to
   whoever you want to share it with.  They just paste the directory into their
   root theme directory and it will instantly appear in Mystic BBS without any
   other work required.  This makes it very easy to create, update, and share
   custom themes.

 + Themes now have an input barrier option, where a character can be defined
   to be displayed on the left and right side of string-based input prompts.
   LeftChar/LeftAttr RightChar/RightAttr can all be defined in theme.ini and
   one or both character can be enabled.

 + New MCI code |IB disables the input barrier for the next string input
   prompt.

 + New Python function "setpinfo(byte, string)" text the prompt info value
   for byte to the text in string. Ex: setpinfo(1, "Hello world!")

 + New Python has many new functions for accessing the file listings.  A new
   demo filelist.mpy has been added to the default installation to demonstrate
   these functions.  The following new functions have been created:

   function "fl_open(basefn)" opens a filelist where basefn is the filename
   for the file base, returning a handle to the filelist  If a filelist does
   not exist one will be created.

   function "fl_close(handle)" closes an opened filelist

   function "fl_seek(handle, filenumber, skip)" seeks to a file number. This
   should always be called before cycling through file listing.  If Skip is
   set to true, then Deleted records will not be returned.

   function "fl_next(handle)" return the next available file

   function "fl_prev(handle)" return the previous available file

   function "fl_found(handle)" returns true if a message from the last seek
   or next or prev function has been found

   function "fileinfo = fl_getfile(handle)" returns a dictionary with
   information about the current file

   function "filedesc = fl_getdesc(handle)" returns a list that contains the
   file description.

 + BUSYLOG debug logging has finally been disabled.

 + Two new Python functions:

     function dateu2d(date) : date - This converts a unix date to a DOS
     crunched date used in places in Mystic.  This date format is being
     replaced in Mystic but it still exists in some areas.

     function dated2u(date) : date - This converts a DOS crunched date to a
     Unix timestamp

 + New Python function: function acsnogroup(access string) : boolean
   Process an access string but returns "true" for all group checks regardless
   of the user's group membership.  Returns true or false is user has access

 + New Python function: procedure setprompt(number, text)
   This sets a theme prompt to the value of text for the duration of the user's
   session or until they change or reload the theme.  The change is not
   permanent.

 + New Python function: function msg_stats(msgbase)
   This function works by passing the handle of an already opened message
   base (msg_open).  It calculates and returns 4 results: Total messages,
   new messages for the current user, number of messages addressed to the
   user, and the unix date of the last post in the message base.   This
   function may cause problems if used within a message reading loop, so
   msg_seek may need to be called afterwards in that case.  Example:

     total, new, yours, lastpost = msg_stats(msg)

 + New Python function: function getnetaddr(number)
   This function returns a network address configuration passed as number to
   the function.  The result is a dictionary with the following elements:

      zone, net, node, point, desc, domain, primary, addr

   Primary is a 0 or 1 value, 1 being true.  Addr is a string representation
   of zone, net, node, point.

 + File Base Editor now shows Network address on the list window, and also
   allows sorting by Base Name, File Name, and Network.

 + Expanded node messages from 79 characters to 245 characters.

 + Template prompts no longer have a length limit of 255 characters, they now
   have no maximum length.

 + File Base Index lister (file_index.ini) now has a sort option which allows
   bases to appear in alphabetical order or by order of appearance in the
   group editor.  See the default file_index.ini for example.

 + Some minor changes to the menu editor, mostly cosmetic and some text
   changes to help clarify what options are when editing a commmand.  You can
   now also use Page Up/Down to move between menu commands without having to
   exit back out to the list of all menu commands.  You can now use CTRL+V to
   simulate a menu while editing an actual menu command.

 + New MCI code for prompt #2: &1=User handle &2=Location

 ! Fixed year 2020 bug that caused some wrong day calculations in a couple
   of places.  The next bug should be 2038, so we have a few more years to get
   that addressed before it becomes an issue.

 + MPLC now has a -T option which will attempt to read MYSTIC.DAT either in
   the current directory or using the mysticbbs environment variable to get
   the Theme path, and then it will recursively compile any scripts found in
   the Theme directory tree.  You can optionally supply the path to Mystic
   BBS root directory if you have multiple installations.  Example:

      mplc -t         - Attempts to read mystic.dat from current directory or
                        mysticbbs environment variable, and then uses Themes
                        path to compile.

      mplc -t /mybbs  - Attempts to read mystic.dat from the supplied root
                        directory, and then uses Themes path to compile

 + MPLC now has a -F option which will attempt to read the Theme path and then
   compile any files matching the supplied mask contained in any directories
   under the Theme directory. Example: mplc -f bulletin*

 + Improved detection of time expiration and connection loss during message
   and file scans.

 ! SEEN-BY lines should now include the net number at the start of new lines

 ! Mystic SMTP client now resends "EHLO" after upgrading connection to SSL.
   Some servers work without this step so it slipped through testing.

 + MIS and FIDOPOLL now save the last dates they interacted with an echomail
   node.  This value is now displayed in the Echomail node editor when
   highlighting a node (Last Inbound=MIS, Last Outbound=FIDOPOLL). /R can be
   used inside the node editor to reset stats.

 ! Mystic was not using a 0-based month in PKT file headers.  Fixed.

 + New prompt editor!  There is now a Reset function which will reset a prompt
   back to the system default prompt.  The Undo function has been enhanced to
   save the last 100 changes and will allow you to undo prompt changes
   starting from the newest change of a prompt to the oldest if you have made
   many changes.  The source of a prompt in the editor is now shown with the
   following values:

     Current Theme  - Prompt is customized by the current theme
     System Default - Prompt is not part of any theme, using system default
     <Theme Name>   - Prompt was inherited from <Theme Name>

   Only current theme prompts are saved in the theme's prompts.txt.

 + All theme prompts have had their maximum length in expanded from 250
   characters to 8192 characters per prompt.

 + Themes now have an ACS string that can be used to hide themes from the
   listing.  Keep in mind when configuring your BBS to allow theme selection
   on connect: There will not be a user known at that time so any security
   will cause the theme not to show.

   The ACS is for the listing only.  The purpose is mostly to hide themes
   while they are in development.  Themes can still be selected regardless
   of ACS using using a menu command:

      Command: GE (Edit User Settings)
         Data: 14 mytheme

 + The GE suboption 14 menu command (select theme) now has a /RELOAD option
   which causes the current theme prompts to refresh:

      Command: GE (Edit User Settings)
         Data: 14 /reload

 + Themes now have an "Order" property which determines which themes are
   listed first.  Values can be between 1-65000 with the lowest numbers
   being listed first.  Themes will also be listed in the Themes editor using
   this value.

 ! Fixed a bug that could cause protocol downloads to get stuck on a
   connection drop

 + MUTIL's MsgPurge now validates that messages are from or addressed to valid users
   if the base type is Private or the base allows for Private replies within
   the base.

 + By request, Mystic no longer shows the OS and Node number when initially
   connecting to the BBS.  If you wish to add this back you can use MCI codes
   or tell me why you think it needs to be reverted!

 ! Fixed a bug where MSGID could result in 0:0/0 when zone matching a Netmail
   base with no address assigned to it.

 + Mystic no longer logs the actual bad password text.  This should have
   been removed a long time ago but I always liked seeing what the scripted
   bots tried to log in with when they found my BBS.

 + Rewrote all of the FLO add/remove functions with improved file locking to
   address potential race conditions.

 ! Fixed an issue with a file resume race condition in BinkP client/server

 ! Fixed an memory leak introduced in A43 that could cause a rescan to give
   corrupt message(s) in a packet.

 + Msg/File base global editors now ask you if you want to abort when pressing
   escape to exit.

 + Echonode editor now warns you if you edit a node and save it with a 0:0/0
   address or a missing domain.

   <ALPHA 1.12 A44 RELEASED -- 4 Feb, 2020> 
   

1.12 Alpha 45


 ! Fixed bug in Python setprompt function.

 ! Rewrote some old DOS compatibility wrappers so that Mystic no longer
   localizes the file times in BinkP sessions.

 ! Similar to BinkP Mystic no longer localizes the system time in the Path
   portion of a TIC file.

 ! Fixed a bug with Lightbar/Grid style menus that was causing them to not
   handle extended key jumps properly.

 ! Fixed a bug in the nodelist browser that could cause some results to show
   the wrong Net number.

 + Menu Command: GE option 17 (Change file list type) can now have an option
   of 0 or 1 (0=standard 1=lightbar) to set the type without prompting

      Command: GE (Edit user settings)
         Data: 17 1

 + Menu command: GE option 20 (Change message reader type) can now have an
   option of 0 or 1 (0=standard 1=lightbar) to set type without prompting

      Command: GE (Edit user settings)
         Data: 20 1

 + Revamped the MUTIL startup code so that it provides better details in the
   errors.log should it fail to start up for any reason.

 ! Fixed broken outbound SSH (Menu command IS)

 + When entering Echomail addresses, Mystic will now automatically assign the
   Primary address if one isn't defined.  Primary flag will also be removed if
   an address is set to 0:0/0 with primary flag.

 + Mystic BINKP server now sends an M_ERR frame and aborts the session if it
   receives what looks to be nonsense from the remote client.  Previously it
   would wait until timeout.

 + When Mystic's Firewall has blocked a connection it will now detect if the
   connection was intended to be BINKP and send a "BUSY" flag with a note that
   says the connection is blocked.  FIDOPOLL will now detect this as well.

 ! Fixed a bug where a user's scan settings for a base could get "stuck" in
   Forced mode if a base was forced and then changed.

 + Mystic now has an "Auto Whitelist IP" option in Login/Matrix settings. This
   option can have two values: "User Flag", or "All Users".

   When set to "User Flag" Mystic will check a flag on the user's account
   called "Whitelist IP" and if its set, it will automatically whitelist the
   IP of the user who logged in if it is not already whitelisted.

   When set to "All Users" Mystic will automatically whitelist the IP
   of all users who successfully log into the BBS.

   <ALPHA 1.12 A45 RELEASED -- 18 Feb, 2020>
   

1.12 Alpha 46

 + Mystic Linux version no longer uses command line options for password
   during RLOGIN and SSH sessions.  It now privately passes using a 512
   bit hash.

 - The old MI Message Index Reader has been removed and replaced with the
   newer Index reader.  This "new" index reader has been in Mystic to be
   tested under the M! menu command for more than a year so it is time to
   get rid of the old.  The default template is msg_index so you should
   copy msg_index.ans and msg_index.ini during upgrade if you haven't yet.

 + Mystic's BINKP server now has an "SSL Port" option which when set to a
   non-zero value will also run the BINKP server in direct SSL mode.

 - Removed the Opportunistic BINKP SSL/TLS extension support as Mystic was
   the only known software to support it and it was unlikely other software
   would adopt it.  Maybe I'll bring it back someday as I do prefer this
   method of BINKP server.

 + Mystic's BINKP server now allows the "Port" option to be set to 0 to
   disable non-SSL connections when used in combination with the SSL Port
   option, so that Mystic will only accept SSL BINKP connections.

 + FIDOPOLL and EchoMail node entries now have a "Use SSL" option which flags
   whether or not the node being configured for BINKP is an SSL BINKP node or
   not.  Note: The default port for BINKP SSL is 24553.

 ! Fixed a bug where stale .BSY files were not getting deleted properly.

 ! Fixed a potential incompatiblity issue with some versions of Cryptlib.

 ! Fixed an issue where a file that contains "file_id.diz" in its filename but
   is not an exact match could get left in the temp directory when uploading
   files.

 + MIS now has a replacement for FIDOPOLL built into it and is accessible by
   the "POLL" command line.  This still supports BINKP, BINKPSSL, FTP and
   Directory connections and has the "send "force" and poll by address lookup
   options contained in the original.

   The benefits here besides having one less binary as part of the Mystic
   package is that it has a better user interface, better logging, and can
   have an unlimited number of concurrent outbound connections (defaulting
   to 5, configurable under Servers > General Options).

   For example if you have 2 FTP uplinks and 5 BINKP nodes that all have mail
   you can run the "mis poll send" command line it will attempt to send to all
   7 nodes at the simultaneously instead of one after the other.

   Eventually FIDOPOLL will be replaced so it may be a good idea to switch
   over to using this sometime soon.

 + When attempting to connect to an outbound mail server, MIS will now wait
   only 6 seconds, down from 10 before assuming the connection is unavailable

 + MUTIL MsgLink no longer spams every single message base into the logging
   regardless of loglevel.  Only the base name will be shown if there were
   messages actually linked within that base (level 2) and a list of the
   actual links (level 3)

 + MIS POLL now tracks send and receive file statistics (number of files and
   size) for FTP-based FTN transmission.

 + MIS POLL now tracks connection errors for outbound connections for both
   FTP and BINKP style connections.

 + New MUTIL function [EchoNodeTracker] can be used for various HUB-related
   utilities to automate downlink management.  Features include:

      - Suspending echomail nodes based on days of inactivity
          - Optionally unlinking message/file base subscriptions
          - Optionally deleting their entire outbound mail queue
      - Changing mail and filebox crash nodes to hold-only after a set
        number of failed outbound connection attempts
      - Automated resetting of echomail tracking statistics after X days

   See default MUTIL.INI [EchoNodeTracker] stanza for more information.

 + When changing a node from "Inactive" to "Active" in the Echomail node
   editor, Mystic will now ask if you'd like to reset the node's statistics.

 + EchoNode editor now shows a "Crash Errors" statistic which is the number
   of failed outbound connect attempts since last reset.

 + CHATx.DAT files now include the Process ID of the current process running
   the node and the updated field now uses a Unix timestamp.

 + Users now have a new flag that when set to Yes will always log them in as
   invisible, bypassing the login as invisisble prompt when set to Yes.

 ! Fixed a bug with BINKP where Mystic could send a 0 byte length data frame
   if a file size was exactly evenly divisible by the buffer size.

 + Mystic now allows the -Nx command line to be supplied to force a specific
   node number if you want to log into it.  You should still not use this and
   let Mystic manage the number numbers itself, but I've added this for those
   that seem to be trying to do this for some reason.

 ! Fixed a bug with SSL and BINKP where the data frame size could be
   improperly calculated under severely throttled/poor latency connections.

 + Two new Python functions: msg_getlr and msg_setlr to get and set the
   lastread pointer for the currently opened message base.

     Syntax: msg_getlr (msgbase, userID) returns last read message
         Ex: lastread = msg_getlr(msgbase, user["id"])

     msgbase is the open message base pointer returned by msg_open
     userID is the user's unique ID found in the "id" field of a user
     lastread is a signed 32-bit integer of the last read message which can
     be passed to msg_seek, for example.

     Syntax: msg_setlr (msgbase, userID, userHandle, lastread)
         Ex: msg_setlr (msgbase, user["id"], user["handle"], lastread)

     The user handle should always be passed (not the real name) as this value
     will be hashed as required when a new last read record needs to be added
     for the user.

 ! When deleting an Echomail node, Mystic was not delinking the nodes from
   file bases causing an "Unknown node" message to appear in file bases.

 + Revamped group configuration.  Group names have been expanded to 80
   characters.  Groups now have new ShortName field (40 characters).  Groups
   now have a InfoFile field (40 characters), and each group's Hidden boolean
   has been changed to a flags field.

 + New MCI code: <pipe>FS returns the current file group short name

 + New MCI code: <pipe>MS returns the current message group short name

 + MPL groups now have "groupshort" and "groupinfo" and "groupflags" variables

 + Python groups now have "shortname" "infofile" and "flags" entries in the
   group dictionary.

 + MIS.LOG now has configurable log rolling in the System Configuration >
   Servers > Logging section.

 + POLL.LOG now has configurable log rolling in the System Configuration >
   Servers > Logging section.

 + When using GOSUB/RETURN with Lightbar menus, Mystic will now remember your
   last selected item and return the cursor position to it when returning.
   If you want to reset the cursor, use /CURSOR on the data field of your GR
   menu command.

 ! MIS was not refusing to run if the Mystic BBS data files did not match the
   version of MIS.

 ! When in the text editor in view only mode, the backspace key was still
   working in edit mode.

 ! Mystic was being way too aggressive with SSL read/write timeout values
   which may have caused some errors in SSL BINKP.

 + New option: "Ask Message Post" in message settings, when set to yes or no
   determines if Mystic will ask users if they'd like to post after reading
   a message base.

 + Mystic's message readers will now print all the maximum column width per
   line instead of columns - 1.  This means that your message reading
   template will need to not use the bottom line of the user's terminal for
   message text or it will cause the user's terminal to scroll.  This may be
   reverted back, but we'll see how it goes and how it effects people.

 ! When toggling show kludges (V) in the standard message reader, Mystic was
   not automatically displaying the message.

 + Max number of simultaneous poll connections is now configurable in the
   Servers > General Options section of System Configuration

 + When tossing TIC files, the dir_prefix can now be defined by source address
   as with other settings.

 + New command line option -AUTH <user> <password> checks the supplied user
   and password and prints TRUE if the user exists and password matches or
   FALSE otherwise and then immediately exits.

 ! Fixed a bug in Linux versions where Mystic would couldn't find files in the
   file base when hatching a file, despite it actually existing.

 ! Fixed a bug that could cause some long lines in echomail packets to get
   truncated at 255 characters when tossing messages.

 ! Fixed a bug in the FTP server that would confuse some FTP clients when
   closing a data connection (sending two 226 responses after successful
   transfer).

 + Mystic now allows a single message base to be assigned to a QWK network
   when operating as a hub, and a FidoNet style network.  Gating will be
   automatic when configured for both.

 ! Fixed a bug when copying an event in the event editor that would cause it
   to have the same unique ID as the original event.  This could cause some
   events to save incorrectly.  When editing an event, all IDs should be
   unique (the ID is shown at the top of the edit window). Review your events
   and if you have any that have a duplicate ID you should either make a copy
   and then delete the original or just delete the original and remake it so
   all events have a unique ID.

 + MUTIL ImportEchomail now has a bad_packet setting which defines a directory
   where bad packets are moved to when an error occurs during import.

 + New Python function: flush().  This forces any data currently in Mystic's
   outbound buffer to be sent to the remote client.  In almost all
   circumstances Mystic handles this for you so this will not be needed.

 + New Python function: purgeinput().  This clears out any input currently in
   Mystic's input buffer.  In most cases when doing any IO with the user Mystic
   will handle this on its own.

 ! Mouse support was not working in Lightbar menus.  Not sure when this was
   broken but it was probably when I changed how NetRunner mouse support
   worked in Beta 19.

 + Msg listing and file listing was not working properly with mouse support
   but I also changed it to allow clicking an already selected message or
   file to read the message or flag the file respectively.

 + New MCI codes for setting high intensity background colors ON or OFF for
   compatible terminals like NetRunner and SyncTerm:

      CY - Turns iCE colors ON
      CN - Turns iCE colors OFF

 + New Menu Command: XV.  This option allows the user to validate their
   e-mail address from the Matrix login menu.

 + Users can now be created in the User Editor by using the CTRL+A hotkey

 + Updated the defaults for Matrix login so it no longer uses a Matrix
   password by default.

 ! Fixed a bug in the QWKPOLL FTP client and the FTN FTP client that was
   causing non-passive mode to fail.

 ! Fixed a display bug in the From field of routed Netmail messages.

 ! MIS was not resolving the "Country" of the connection when the IP address
   was whitelisted.

 + Area/Filefix both now accept %QUERY which works the same as %LINKED

 ! Fixed a bug with the MPL compiler and the DateValid fuction

 + New users can now be created from the command line using the -NEWUSER
   option followed by a series of attributes in any order:

     mystic -newuser handle=myhandle "name=real name" pass=mypass
     email=mysticbbs@gmail.com level=10

   Mystic will print TRUE or FALSE to STDIO depending on if the user was
   successfully created or not.  The command line MUST have a handle, name,
   and password attribute at a minimum for the create to succeed.

   The level value will accept anything less than 250.  Any new user created
   with a level of 250 or higher will be rejected.

 + The "hackwarn.txt", "newletter.txt" and "sysletter.txt" automatic messages
   will now be sent from/to the "Feedback To" setting instead of using the
   SysOp name setting.

 + When searching for a user name, typing "SYSOP" will now translate to the
   "Feedback To" user setting instead of the SysOp Name.

 ! MUTIL PostTextFile was not using the default Origin line when the base's
   origin line was blank.

 + When executing an archive, MIS and MUTIL will now automatically append
   2>nul redirect to prevent leaking error messages.

 ! Did a review of the FTP server code which resulted in a bug fix and a fix
   of a memory leak when using passive and extended passive modes.  Server
   stability has also been (hopefully) increased.

 ! Fixed a bug with QWK packet generation when message text lines are longer
   than 255 characters.  This bug existed both in the BBS and the QWK
   Networking engines.

 + Mystic-DOS "EDIT" command now also accepts "nano" and "notepad" for those
   of you who have that stuck in your head.

 + Two new MCI codes to show message status of E-mail base:

      MW : Shows the number of messages in your e-mail box
      MU : Shows the number of unread messages in your mailbox

   Note that these values are set to 0 until the MC (Check E-mail) menu
   command is executed.  The values are calculated at that time.

 + New optional data option for menu command MC (Check E-mail): /SCAN
   If /SCAN is supplied the MC command will only calculate the current
   mailbox stats (total messages and unread messages) without having any
   display or interaction with the user.  These values will be stored in
   the MU and MW MCI codes.

1.12 Alpha 47

 + The MW menu (write email) command now uses the "Feedback To" configuration
   setting as the person to send e-mail to if the user enters "SYSOP".

 + Enabled the DX menu command to execute DOS FOSSIL doors in Windows 32-bit
   using DOSXTRN.  This can be used as an alternative to NetFossil and will
   work over all connection types for DOS doors (ie, SSH).  DOSXTRN+DLL must
   be in root Mystic directory and are not distributed with Mystic BBS.

 + Prompt #132 (More Yes No Continuous) has been changed.  The first word
   of the prompt now defines the hotkeys used for the prompt.  If you have
   a theme that customizes this prompt, the theme prompt will have to be
   updated to include this change.

     OLD: More: (Y)es, (N)o, (C)ontinuous?
     NEW: YNC More: (Y)es, (N)o, (C)ontinuous?

 + Prompt #522 (Yes/No text) has been changed.  The first word now defines
   the hotkeys used for the prompt.  If you have a theme that customizes
   this prompt, the theme's prompt will need to be updated or reset to
   default.

     OLD: No Yes
     NEW: NY No Yes

 + Mystic now displays the default Yes/No text when prompting non-lightbar
   questions.  This is more inline with how Renegade Y/N prompts worked.

 + Updated default LHA/LHZ archive configuration for Linux systems.

 + When executing archives, MUTIL in Unix will now automatically append
   " > /dev/null 2>&1" to the end of each archive execution command in order
   to hide standard output and error messages.  It was already adding "2>nul"
   in Windows.

 + Increased the data timeout from 10 to 30 seconds when waiting for a data
   connection in QWKPOLL to give a little more time for hub systems to
   generate QWK packets (non-passive connections).

 ! Fixed a bug where the last line of quoted text could occasionally be
   missing from the quote selection.

 ! Fixed the broken escape sequence during outbound telnet, rlogin, and SSH
   connections.  CTRL+] should now properly forcefully exit the outbound
   connection.

 + Because allowing a CTRL+] escape character may interfere with transfers
   during a bridged connection (ie, a file may have the escape character in
   it which could end the session when it attempts to send over the bridge),
   all outbound telnet, rlogin, and SSH connections will require the /ESC
   option in the command data for the escape sequence to be active.

 + Mystic will now execute connect.mps which will be ran before any terminal
   detection or codepage questions (startup.mps is executed after those
   things).

 + Added autocreate.mps to the default install scripts directory to give an
   example system for automatically creating users during RLOGIN.

 + When executing a door, Mystic now has a helper function to change
   directories from the command line.  If you have CD<directory> in your
   command line, Mystic will remove it and change to that directory prior
   to executing the command line.

   For example:

     cd<c:\doors\stackem> stackem stackem.cfg %Pdoor.sys

 ! Fixed a bug where editing a long user note would corrupt itself and the
   theme field as well.

 + Added new MUTIL function [Export_AREAS.BBS] to create an export of all
   Echomail message bases in the AREAS.BBS file format.  See the default
   MUTIL.INI for example.

 ! Mystic was not adding the FTN address to the Origin line of NetMail bases
   if no address was set in the base configuration.

 + The -newuser option now has the ability to update existing users if the
   optional "update" command is provided on the command line.  In other words
   it will create a new user if they do not exist, or update them if they do
   provided the user to be updated is not currently logged into the BBS or
   being edited in the user editor.  Examples:

     mystic -newuser update handle=g00r00 pass=mypassword

   This command would create the user g00r00 if they did not exist, or update
   the password of the existing g00r00 account if they account did exist.

     mystic -newuser update handle=g00r00 email=new@email.com

   This command would update the user g00r00 but if the user g00r00 did not
   exist it would fail to create them because no password was provided and
   by minimum a username and password must be provided to create a new user.

   These commands would also fail if the update was requested when the user
   g00r00 was logged into the BBS.

 + The -newuser command line option now has the ability to specify the user's
   start menu by using the menu=menuname key/value pair.

 + Expanded the number of maximum screen lines by 10, and the columns by a
   bit too so now Mystic supports terminal sizes up to 160x60 (and 40x24 for
   the smallest size <untested>).

   Note that if you have enabled creation of "node windows" when running the
   Windows version of Mystic, you will want to right click your command
   prompt window, select "Defaults", and set the window/buffer size to
   default to 160x60.  Mystic creates node windows using the default settings
   so if you don't select the largest window a user can use then the screen
   will not look correct when a user is in a terminal mode larger than the
   node window.

 + User terminal size is no longer stored in the user record, and Mystic
   always uses the detected terminal size (or the default terminal size
   defined in System Configuration if no graphics detected on connection).

 + New MPL variables "TermSizeX" and "TermSizeY" tell you the size of the
   user's terminal.

 + New MPY function termsize() returns the x and y size of the user's terminal

   For example:
     x, y = termsize();

 + When logging in locally in Windows, Mystic will now fully draw the status
   line at the bottom of the screen.

 ! Fixed a bug in the FTP server that was causing directory listings to show
   an incorrect date.

 + MPL InputOptions now takes a extra parameter at the end which is a Char
   variable to signfify the echo character to use when doing password input.
   Testinput.mps example has been updated with an example.

 + MPL Input class now has a new mode, mode 4 which is a masked string input
   that can be used for password entry.  Recompile MPL programs (mplc -t).
   The testinput.mps demo has been updated with a password example.

 + The GE menu command option 10 for changing terminal size now has prompts
   #553 and #554 for terminal columns.  No need to do anything but copy over
   the new prompts.dat into your data folder as per upgrade instructions.

 - The old random display file system is gone so if you have the .ana, .anb
   type files you will need to update them to use the "new" system that is
   being brought over from the Mystic 2 build.

 + New display file random system.  If for example the base filename of the
   display file is "test" then you can make any additional files with a .#
   after the base filename and one of them will be selected randomly.  The
   old system had a limit of 36 random ANSIs per display file but this
   system has no limits.  For example:

      test.ans
      test.1.ans
      test.2.ans
      test.10.ans

   Mystic will randomly select and display one of the above files.

 + New display file system for custom terminal sizes that allow specific
   files to be displayed based on the user's terminal size.  For example if
   the base display filename is "test" then you can add either the columns
   or both the columns and lines:

      test.ans              < Displays to users with less than 120 columns
      test.c120.ans         < Displays to users with 120-159 columns
      test.c160.ans         < Displays to users with 160+ columns

   You can also include the number of lines as well:

      test.c132x37.ans      < Displays to users who have 132x37 or larger
                              terminal size.

 + New display file system can combine the random ANSIs along with the
   terminal sizes.  When combined the random number comes first followed
   by the terminal size.  So if you have three 160 column scrollers you want
   to randomly display and three 80 column, you could name them like this:

       scroller.1.ans
       scroller.2.ans
       scroller.3.ans
       scroller.1.c160.ans
       scroller.2.c160.ans
       scroller.3.c160.ans

   Now if you executed a GD menu command with the data of "scroller" Mystic
   will randomly display scroller.#.ans if the user's terminal size is less
   than 160 columns.  If the terminal size is 160 columns or higher Mystic
   will randomly display scroller.#.c160.ans.

   All of Mystic's automated display files like logonX and so on all use this
   system as well, and so does the dispfile MPL and showfile MPY functions. The
   c#x# format is case sensitive.

   It is important to note when doing 40 column themes that the column-defined
   files always take priority over the base file. This means test.c40.ans will
   always be selected over test.ans.  If you are creating a theme that supports
   both 80 and 40 columns then you'll want to create c80 files along with your
   c40 files.

 + Template files now allow both random and terminal sized-based file naming
   similar to display files.  For example:

     msg_editor.ini
     msg_editor.c132x36.ini
     msg_editor.c160x50.ini

 + Mystic's Text Editor will now use the full size of the terminal up to
   160x60.

 + The [X## MCI code to move to an X position on the screen has been updated
   to allow a third character for X coordinates between 100-160.  The way
   this works may have to change in the future.

 + MUTIL: Added the option to export Golded message base definitions into a
   nicely formatted text file.  See the default mutil.ini for an example of
   the new [Export_Golded] stanza.

 + Added new default FS editor template for 132x36 screen resolution.

 + Rewrote the logic for reformatting text when using the delete key in the
   FS editor.

 + Rewrote the logic for reformating when using backspace in FS editor.

 + Fidopoll has been removed, you can delete it.  MIS POLL completely replaces
   it now, all of the FidoPoll commands there type MIS POLL to get a list.

 ! A46 build was accidentally shipping with default group configuration in the
   old A45 format which would cause some problems unless they were deleted.

 + New MCI code |[0 sends a terminal sequence to hide the cursor (support for
   this will depend on the terminal).

 + New MCI code |[1 sends a terminal sequence to show the cursor (support for
   this will depend on the terminal).

 + Menus in Mystic now have a "Marquee" option in the Menu Settings.  This
   allows each menu to have an optional scrolling field of text of up to
   255 characters (but could in theory be expanded).  The Marque settings
   have the following option per menu:

          Active | Yes
               X | 1
               Y | 1
      Field Size | 60
          Offset | 1
     Scroll Type | Scroll Left
           Speed | 200
            Text | |04Hey, |12|UH|04!  How are you?


    The active field determines whether or not this will be active on the
    menu.  This must be Yes and the user must have ANSI graphics for this
    to work.

    The X/Y field define the location of the start of the scrolling field

    The Field Size defines the number of characters the scrolling field
    will show at once.  If the field size is larger than the text supplied
    then Mystic will wrap the text to fit the field.

    The Offset allows the starting character to be defined when the scrolling
    beings.  So the first character at the start X/Y position will be character
    at # "Offset" of the text.

    The Scroll Type defines the method of scrolling, either scrolling to the
    left or the right.

    The Speed option defines the number of milliseconds to delay between
    scrolling of the text.  Valid options are 100 to 1000ms.

    The Text field defines the actual text that will be scrolling.  This text
    can have pipe color codes and MCI codes that returns information about the
    user such as UH for their user handle and so on.

 + The default "testlightbar" menu has been updated to show an example of a
   scrolling Menu Marquee.

 + New Menu Command: -M This command sets the current menu's Marquee text
   with the text contained in the data field.  If the first 5 characters
   are "/ADD " in the command data, Mystic will append the text onto the
   existing scrolling field instead of replacing it.  If the data field is
   /RESET it will reset the Marquee to the configured Marquee text value.
   Otherwise, it will replace the Marquee with the text in the data field.

 + The theme editor no longer allows the theme being edited to be selected as
   an inherited theme.

 ! Fixed a bug when forwarding a message from a local message base to an echo
   base that caused the network address to be missing from the origin line.

 + Renamed the "Echo/Qwk" message base type setting to "Networked"

 ! May have fixed a bug created in A46 with file base indexing.  Everyone that
   may experience problems with duplicate file detection should probably run
   file base packer so it can regenerate the index files.

 + New MCI code |CHx.  This MCI code just prints out the character after the
   CH.  So for example |CH| would send out a pipe character |CHa would print
   the letter a.

 + New MCI code |PD. This MCI code instructs Mystic to space pad the next MCI
   code value result. So for example |PD|MB would return " General Messages "
   whereas |MB would return "General Messages".

 + Menu file names can now use the dynamic column and lines filenaming and the
   random file names, just the same as templates and display files.  For
   example:

     main.mnu
     main.1.c132.mnu
     main.2.c132.mnu
     main.c160.mnu

 ! Fixed a bug where if an extended key is defined in a standard menu, that key
   would be available for input.

 + MUTIL will now honor the "eacs_list" tag when configuring defaults for auto
   created message bases.

 + New ACS command X# where # is the number of columns of the user's terminal
   size.  For example: x132 would be true if the user has 132 or higher
   columns

 + New menu command option: /THEME for the *# menu command.  When supplying
   this option, Mystic will not ask to select the theme to edit and instead
   will load the current theme for editing.

 + New option when selecting a menu to edit in the menu editor: /T which can
   be used to change the theme.

 + Rewrote the setting of message pointers by date (Menu command MD) so that
   it should be significantly faster.

 + New users now have their default message pointers set based on one of
   several different options found in New User Settings 1:

   Start Msg Pointers can be set to any of the following:

     First message         : Start at the first message in each base
     Last message          : Start at last/end of messages in each base
     Last (Value) messages : Start at the last X messages of each base
     (Value) days ago      : Start at messages that are X days old.

   The second Value field sets the number of messages or the days old that
   the pointers will be set to depending on the Start Msg Pointers option.

   For example, if Start Msg Pointers is set to "Last (value) messages" and
   value is set to 10, then the user will start at 10 messages back from the
   last message in the base.

   If Start Msg Pointers is set to "(Value) days ago" and value is set to 7
   then the user will start reading messages in each base that are 7 days old
   or newer from the date of their user creation.

 ! Fixed a bug where Areafix would not properly respond when it receives a
   message from software that ends PKT lines with the CR+LF combination.

 ! Fixed a bug in MUTIL echomail import where the Bad packet directory being
   left blank could cause bad packets to get moved to the root directory of
   your disk drive when instead it should have disabled the bad packet move.

 + New Python function isuser(name) returns true or false if the user name
   passed to the function is a valid user:

     if isuser("g00r00"):
       writeln("g00r00 is a user!")
     else:
       writeln("g00r00 is NOT a user!")

 + Theme configuration will now allow iCE/blinking color attributes to be
   selected when setting input fields and theme colors, etc.

 + Message base colors in the editor will now allow iCE/blink color attributes
   for message text.

 + In Windows local mode, the status line can now be configured to use iCE
   colors.

 + Mystic echomail tosser will now move whole echomail bundles to the bad
   packet directory if it cannot determine archive type or if it cannot find
   any packets in the bundle when trying to extract it.  Unknown files will
   continue to be left in the incoming folder.

 ! Fixed a bug where the user could be logged out for inactivity immediately
   after a SysOp chat using NodeSpy.

 ! Text editor was not searching the very last line of the text file when
   doing searches or searching Again.

 + MUTIL: Changed the error message to be more descriptive when importing
   unsecure FTN packets with a password assigned to it.

 + Updated Mystic's BINKP protocol to work around a bug in BINKD where
   the way BINKD escapes filenames does not follow BINKP specifications.

 ! Fixed a bug where Mystic's online help system could end up looping
   endlessly if a connection was lost while browsing a help file.

 ! Fixed some bugs in the Message Index Reader when there are no subscribed
   message bases that could cause a crash.

 + MIDE now properly defaults to UTF8 output in Linux and also includes a
   codepage setting mide.ini to force CP437 or UTF8.

 + MIDE: Removed the 80x50 column mode left over from DOS MIDE.  MIDE now
   uses the current screen size in its entirety.

 + New Python Engine has replaced the old one.  This engine supports Python
   2 and Python 3.  Two new fields are now in System Configuration > General
   Configuration and those allow you to set the location/name of the Python
   library that Mystic will try to load.

   If you are upgrading from an old version you should check to make sure that
   those values are blank and if they have old left over configuration data
   you should set them to blank values.  If blank values do not work then you
   must set the value to your installed Python location/library.

   For example in Linux you could search for the library like this:
     "sudo find /usr -name 'libpython2.7*.so*'

   This should give you the location of your Python 2.7 library.  If you do
   not have Python 2.7 installed then you can usually install it via a
   package manager.  For Ubuntu 20.04 for example you can do:

     sudo apt install libpython2.7

   Repeat the same process for the Python 3 as well.  In Windows the DLL
   files are usually python27.dll and python3x.dll where x is the version
   and the installation typically puts them in your C:\WINDOWS folder tree
   somewhere.

   As always the installed bit version of Python must match the installed
   version of Mystic.  For example 64-bit Windows needs 64-bit Python.

 + New Menu command "GZ" is added to execute a Python 3 script.

 + New command line option for Mystic -Z will execute a Python 3 script from
   the command line (similar to the -Y and -X for Python 2 and MPL
   respectively)

 + Mystic-DOS command PYTHON is now changed to PYTHON2

 + New Mystic-DOS command PYTHON3 executes a Python3 script.

 + Theme prompts with the first character of ~ will now attempt to execute
   a Python 3 script.  For example:

     001 ~mypy3script

 + Added a new horizontal menu MCI code similar to the pop up vertical
   menu, which can be used to quickly make a horizontal lightbar menu and
   optionally have a description line below it.  The format is as follows:

     <pipe>#H#<color>#<high_color>#<desc_color>#<selected>#<options>

   The <color> represents the text color attribute for the standard text
   of the selection.  The <high_color> represents the highlighted color when
   the item is selected.  <desc_color> is used only when a description is
   assigned to a selection and represents the color of the description text.

   As with other places where an attribute number is defined the value can
   be calcuated be the following formulate FG + (BG * 16) so FG color of white
   (16) or a blue (1) background would be 15 + (1 * 16) which is 31.

   <options> consists of a comma-separated list of key/text pairs defined as
   key-text where key is the hotkey and text is what is lightbar selectable.

   So for a horizontal lightbar menu with two light bar options it would look
   like this:

     <pipe>#H#7#31#14#2A-Option A,B-Option B#

   The above would create a horizontal lightbar menu with two options called
   "Option A" and "Option B" with the first having a hotkey of A and the second
   a hotkey of B.  The text would be attribute 7 (grey) and the highlighted
   text would be white on blue background (attr 31).  The third field would
   not be used because there is no description defined for any of the options
   and the fourth option is says to default to the second option (Option B)
   when opening the menu.

   Descriptions can be applied to each option by putting those values in
   backets in the item name.  The description will be displayed on the line
   under the lightbar menu in the same way Searchlight BBS would.  For
   example:

     <pipe>#H#7#31#14#2A-Option A[Option A description here],B-Option B#

   Pipe color codes can be used in the option names and will be rendered as
   expected when the item is not highlighted.

 + Made some enhancements to the FS editor to how reformatting works when
   pressing enter in the middle of a sentence or backspace to a previous line

 ! Mystic's text editor was not detecting a "changed" text file if the only
   command done was to cut a line of text.

 + Mystic's ANSI editor now supports editing ANSI files based on your current
   screen size.  If you are greater than 80 columns Mystic will ask when
   loading an ANSI how many columns the ANSI is with options up to 160 columns
   if your current screen size supports it.

 ! Fixed a bug with MIDE Run command and also added a screen pause after
   executing the script.

 + Added Menu Margins to the Menu Settings for each menu.  This is used for
   standard type menus and allows a number of characters to be defined as
   margins on the left and right side of the screen before calculating the
   columns and drawing the menu commands.  Setting these to 0 will disable
   the margins which will generate menus as they have always been generated.

   There are two sets of margins, one defined for terminals 132 columns or
   higher and the other set used for those that are less than 132 columns.

 + When displaying internally generated menu commands, Mystic will now draw
   the commands in a non-destructive mode when ANSI is enabled.  This means
   the location of menu commands will always be the same and if you display
   an ANSI menu (displayed using the header) you can leave a space for the
   commands and Mystic will automatically populate them without overwriting
   the ANSI.

 + The E-mail autovalidation function (when using the security level upgrade
   option) will now only change your security level if its higher than your
   current security level.

 ! When viewing a text file from within an archive in ASCII mode, Mystic was
   not properly displaying the text file.

 + New MPL Function fWriteStr which will write a string to a text file without
   adding line ending characters.  IE:

     S := 'Hello world';
     fWriteStr(F, S);

 ! Fixed a bug when using the CD<dir> function in the data field of a door
   menu command.  The DX menu command was also not logging the command line
   when executing.

 + When changing a message or file group, the OK ACS flag will be set to true
   if a user's group was changed successfully (false otherwise).

 ! Fixed a bug where Mystic would reset the user's time per day on each login
   instead of once per day.

 + MUTIL will now try to log a result code returned by the operating system
   when executing an archive (if debug log level is enabled).

 ! When resolving the MN MCI code, Mystic will now show the QWK network name
   where previously it would show the local network name.

 + Mystic Configuration now has a "reset caller data" option in the Other
   drop down menu.  This will give you the option to reset your last caller
   information and/or your total system callers.

 ! Mystic was not allowing a theme's input field colors to be set to
   attribute 0.

 ! Boolean searches were not working properly in file descriptions but message
   searches appear to be working fine.  Fixed.

 + Mystic-DOS now has a new "MASSUL" command which will kick off a mass upload
   directly from the Mystic-DOS prompt.

 + New ACS command: "OC" will return true if its the user's first call to the
   BBS.

 + New MPL variable: "AcsOKFlag" reads and allows you to set the current
   state of the "OK" ACS flag when evaluating ACS.

 + New MPL CFG variable: CfgSemaPath returns the path to the Semaphore
   directory.  I don't think this would require a MPL recompile but I am
   forcing one just in case.  Recompile your MPL with the new build.

 + New MPY user dictionary variables firston, laston (unix stamps) and calls

 + Mystic will now store the last 99 callers and the GL menu command can now
   optionally be called with the number of last callers to show in the optional
   data field.  If no value is supplied it defaults to 10.

 + MIS POLL KILLBUSY now accepts "app" to delete only Mystic application
   busy files, or "echo" to delete only Echomail busy files, or all to delete
   all.  When nothing is supplied it continues to default to Echomail.

 + Mystic is now compiled with FreePascal 3.2.2 (except macOS) and whole
   program optimization has been disabled as it seems to sometimes cause
   some problems.  Binaries will be a bit larger because of it.

 + You can now flag files by typing the number in the scrolling file list.
   This was already working for the standard file list type but it was not
   working in the scrolling list.

 + MUTIL can now execute specific headers from the command line, overriding
   what is enabled to automatically run in the INI file.  This is done by
   using the -RUN or -EXEC or -EXECUTE option (they all do the same thing)
   followed by a comma separated list of the headers that should be executed.

   If you are using a non-default .ini filename then you must specify the
   execute command before the ini filename.  Some examples:

   mutil -run ImportEchoMail            (Run [ImportEchoMail] from mutil.ini)
   mutil -run ImportEchoMail import.ini (Run [ImportEchoMail] from import.ini)

   An example of calling multiple headers:

   mutil -exec ImportEchoMail,LinkMessages

 + When importing echomail MUTIL will now create an echomail.out or netmail.out
   if it has tossed echomail or has routed netmail through the system.  This
   change may be reverted back or reworked at some point.

 + Updated Mystic's default Message Bases for a fresh installation to include
   a pre-configured FTN Netmail base as well as updated the default events
   for processing inbound and outbound echomail.  The process to set up a FTN
   network out of the box is now as simple as:

     1. Apply to your network and get your address and BINKP settings
     2. Configure your Echomail address in Echomail Addresses
     3. Configure your BINKP or FTP connection settings to your uplink
     4. Enable the import and export events in the Event editor

 + Changed Mystic's Netmail routing logic to simplify routing for most people
   while still allowing full control for power users:

     - Netmail will now first always try to route using the Route strings
       defined for each node.  Previously it would look for a direct address
       match first before doing this.

     - If no route is found from the Route string then Mystic will now attempt
       to automatically route Netmail based on some basic address logic:

       First it will look for a direct address match in Echomail Nodes and if
       one is found it will route directly to the node.

       If there is no direct match then Mystic will perform some logic to
       select the best node that it can find.  If your system gets a Netmail
       for 1:123/123.1 and there is no direct match, Mystic will look for a
       1:123/123 node.  If there isn't one, then it will look for a 1:123 node
       with priority given to the 1:123/1 if exists.  If a node is still not
       found then Mystic will look for a zone match, and finally if no zone
       match is found then the Netmail will fail to route.

       This new system allows for Netmail to work automatically without any
       knowlege of routing being required for most people while still allowing
       full control for power users.

 + MUTIL was not logging Netmail routing errors when Netmail was exported by
   ExportEchoMail function (it was logged only during import) additionally,
   the From and To field of the Netmail will now be logged.

 + MIS POLL ROUTE now optionally accepts an address and when supplied Mystic
   will tell you where a Netmail addressed to that address would be routed to
   based on the current configuration. For example:

     mis poll route 1:1/1
     Netmail addressed to 1:1/1 would route to 1:268/1 (Node Description)

 ! Fixed a bug when parsing incoming INTL kludge lines

 + MUTIL mail processor now supports Netmail PING and pass-through tracing. If
   a netmail addressed to PING is sent to the system or passes through the
   system, Mystic will generate a notification to the origin system. Example:

     Your PING request reached its final destination:

      Address: 215:1/3.1
     BBS Name: Test BBS 4
        SysOp: Sysop Name Here

     No additional route was found for this request.

     Routing VIA Trace:

       Via 215:1/2 @20210619.041119.UTC Mystic 1.12 A47
       Via 215:1/3 @20210619.041126.UTC Mystic 1.12 A47
       Via 215:1/3.1 @20210619.041132.UTC Mystic 1.12 A47

 + Taglines are now built into the full screen editor.  Mystic allows for
   both a global Tagline database available to all users, but also for users
   to create their own personal Tagline database by copying Taglines from the
   Global database or by manually adding/deleting them.  SysOps (s255) can
   also add and delete Taglines in the Global database directly in the UI as
   well but normal users can only add/delete into their Personal database.

   A new template goes along with this system and needs to be copied into your
   theme from the default installation: taglines.ini and taglines.ans.

   A small default Tagline database is now included as taglines.dat in the DATA
   directory and should be copied into your DATA folder when upgrading.

   The global and per-user Tagline databases can each hold 5,000 taglines up to
   75 characters in length.  If a user drops connection while selecting a
   Tagline Mystic will still save their message without a Tagline.

   New setting in New User Settings 2 to set the default Tagline mode for new
   users.  You should go set this to what you'd like new users to receive when
   their accouts are created.  Valid options are:

     On       - Prompt user to select Tagline when saving a message
     Off      - Do not use Tagline system
     Global   - Auto apply a Tagline from the Global tagline database
     Personal - Auto apply a Tagline for the user's Personal tagline database

   New setting in the User Editor for each user has the same options as above

   The FS editor template has had some changes to allow for the Tagline mode to
   be set from directly in the editor.  Changes specifically are made to str7
   in the msg_editor template to add a new prompt for tagline mode.  Refer to
   the default for an example.  Prompt str19-str23 we also added to ask the
   user to select a Tagline mode and to display the current mode.  Refer to the
   default for example.  You'll want to add these in if you use custom
   templates so users can set their Tagline mode but if you use defaults you
   can just replace the default msg_editor.ini file with the new one.

   Mystic will allow up to 5000 taglines per database.

 + Mystic will now automatically save a draft message if for some reason it
   cannot access the message base data files when attempting to save.

 + Mystic now allows a "bademail.txt" which contains a list of e-mail addresses
   that will be refused when a user tries to set their e-mail address.

 + The bad user name and bad e-mail searches now allow wildcards to be used
   in their respective file. So for example you can put *whitehouse.gov into
   your bademail.txt to refuse anything that matches that wildcarded text.

 + Mystic's install program now has an automated install option which can
   be initiated as by running "install auto <root directory>".  If the root
   directory already exists, the installation will abort.  There are some
   addtional options that can be specified for paths:

     data=<data file path>
     theme=<root theme path>
     msgs=<msg base path>

   If you want to force it to overwrite an existing install you can use the
   optional overwrite command.

   For example:

     install auto c:\mystic
     install auto c:\mystic theme=c:\mysticthemes overwrite

 + New MCI code PE pauses and waits for the ENTER key (no pause prompt)

 + Optional data fields now has an Numbers option for input type.

 + MIS will now shutdown if a "mis.shutdown" Semaphore file exists in the
   semaphore directory.  MIS may take up to 10 seconds before it notices the
   semaphore and begins to shutdown.

 + The "mis shutdown" command now uses this shutdown Semaphore file instead of
   OS-level functions.  This means that the shutdown command will now work in
   Windows.

 + New ANSI viewer has now replaced the old one.  The new one has a few new
   features most notably is that is uses the newer template system and also
   can load varible sized ANSIs in a virtual canvas space.  What does that
   mean?  It means for example you can load a 160 column ANSI while you're
   only in 80 columns and then use the left/right arrows, the new TAB view,
   or new page left/right functions to scroll around the file.  A new second
   percentage/graph bar is provided for X axis bars in addition to the
   existing Y axis in the old viewer.

   Other new features include prompting for the baud rate when pressing SPACE
   to show file as a traditional scroller.  The defaults for columns and baud
   can be set by template or overridden by menu command options.

   The format for the GV menu command has changed very slightly to also conform
   to newer standards used within Mystic BBS:

      Command: GV ANSI File Viewer
         Data: <viewer template>;<filename> [options]

   The following options can be used to set/override defaults:

      /END     : Causes file to begin displaying at the end of the ANSI
      /COLS=x  : Override default columns to render the file (ie /cols=160)
      /BAUD=x  : Set default baud rate when scroller viewing (ie /baud=19200)

   Example:

     Command: GV
        Data: ansiview;my160columnansifile /cols=160 /end

   New default templates have been provided and should be copied into your
   themes when upgrading: ansiview.ini and ansiview.ans.  These replace the
   old ansiviewer.ans in the default installation.

   Changed the default ANSI file view on the Demo menu to now use a 132 column
   ANSI done by BBS advocate and otherwise sick ass artist Smooth (A rendition
   of the Mistigris logo which is also a great group of creative people check
   all of them out if you never have)

 + The ANSI archive viewer template (archive_view.ini) has a new option in
   the [Options] stanza called "viewer" which sets the viewer template to use
   when calling the ANSI file viewer (defaults to ansiview if undefined)

 + Input barrier options have been added to Theme editor > Options

 + Themes now have a Color Mode option which can be set to one of three
   options:

      None     : Do nothing when theme is loaded
      Blinking : Set remote terminal to use blinking colors
      iCE      : Set remote terminal to use iCE colors

   Whenever a theme is loaded or changed, Mystic will attempt to set the
   color mode if one has been selected.  Whether or not these actually work
   will depend on the terminal the user is connected with.

 + New MCI code: CD  This MCI code resets the remote terminal to the default
   color mode set in the current theme.

 + Themes now have a Font Mode option which can be set to one of the following
   values/options:

     0 - None         > Do nothing when theme is loaded
     1 - Default      > Sends the "set default font" sequence
     2 - IBM CP437    > Switch to IBM CP437 font
     3 - Topaz        > Switch to Amiga Topaz
     4 - Topaz+       > Switch to Amiga Topaz Plus
     5 - MicroKnight  > Switch to Amiga MicroKnight
     6 - MicroKnight+ > Switch to Amiga MicroKnight+
     7 - mo'sOul      > Switch to Amiga mo'sOul
     8 - p0t NOoDLE   > Switch to Amiga p0t NOoDLE

   Whenever a theme is loaded, Mystic will attempt to set the remote terminal
   to use this font (or do nothing when set to None).  Whether or not this
   actually works depends on the terminal being used.  Some terminals will not
   work at all, some will switch to an Amiga font but possibly not the one
   selected, and so on.

 + New MCI code TF resets the terminal font to the theme's default font setting

 + The fallback setting for a theme has been split into separate fallback
   settings for text files, menu files, prompts, and scripts.  When enabled for
   each specific category, the theme will fall back to the default theme if it
   cannot find a menu, prompt, script or text file.

   If you ever changed the fallback setting in a theme from its default then
   go into your themes and make sure these settings are set the way you want
   them to be set.

 + Mystic Python and MPL have had their fallback variables prefixed with a
   P, T, M, or S for each fallback type.  The default bulletin.mps will need
   a minor update in the variable name or you can copy over the new default.

 + New MCI code SFxx where XX is a font number to switch to in 2-digit format
   for example SF07 would set the font to Amiga mo'sOul.  The number
   corresponds to the same number used to define default font in the theme
   configuration:

     1 - Default      > Sends the "set default font" sequence
     2 - IBM CP437    > Switch to IBM CP437 font
     3 - Topaz        > Switch to Amiga Topaz
     4 - Topaz+       > Switch to Amiga Topaz Plus
     5 - MicroKnight  > Switch to Amiga MicroKnight
     6 - MicroKnight+ > Switch to Amiga MicroKnight+
     7 - mo'sOul      > Switch to Amiga mo'sOul
     8 - p0t NOoDLE   > Switch to Amiga p0t NOoDLE

 + Mystic's ANSI viewer will now read column information from a SAUCE v5 record
   if one exists, and this will override the default columns set by the viewer
   template.

 + Mystic's ANSI viewer will now attempt to read font information from a
   SAUCE v5 record.  If a default font is defined for the current theme then
   Mystic will switch fonts to the font type appropriate to view the file and
   then reset back to the theme's default font upon exit of the viewer.

 + Mystic's ANSI viewer will now attempt to load an Amiga specific template
   when viewing files that have an Amiga font defined for them in a SAUCE v5
   record.  This is done by appending "_amiga" to the template name so if the
   template is "ansiview" then Mystic will first try to load the
   "ansiview_amiga" template before loading "ansiview" if it does not exist.

 + Mystic's ANSI viewer will now attempt to read color information from a SAUCE
   v5 record.  If a color mode is found and if a default color mode is defined
   for the current theme, then Mystic set the color mode of the file upon
   loading the viewer and then restore the theme's color mode upon exit.

 + [ and ] keys now work in the ANSI viewer to do page left/right while viewing
   large column ANSI files.

 + The Index file/msg reader when running in "Area select" action mode (ie
   using it as a lightbar base selector) will now set the OK ACS flag to true
   if the user selects a msg/file base.

 + The menu editor now pops up a selectable box of menu commands when setting
   a grid jump ID.

 + When calling the outbound telnet/rlogin/ssh menu command, the /PROMPT option
   can be supplied to hide displaying of the connection prompts.

 + The MYSTIC.DAT format has been expanded and restructured slightly.  This was
   to increase then number of FTN Networks from 30 to 50 but also some other
   minor changes:

      SMTP login expanded to 60 characters
      SMTP password expanded to 128 characters
      Non-user password fields (matrix, newuser, etc) expanded to 25 chars
      Internet Domain expanded to 60 characters
      Added BBS Location field

   The latest record structures are included in the docs folder (RecConfig is
   the record that has changed).

 + New MCI code BL displays the BBS location as set in configuration

 + Mystic's BINKP protocol will now send BBS Location if set in configuration

 + Prompt #150 has been changed to contain the server type text for the
   terminal servers (used in whos online and last callers, and the BD code).
   Make sure you don't forget to replace your prompts.dat when upgrading.

 + The POP3 server will now allow login via the full e-mail address instead
   of just the user name.  This helps some clients that do automatic setup of
   accounts that may attempt to use e-maill address for login.

 + The POP3 server will now log the actual back and forth of commands between
   client and server when Log Level for MIS is set to Max and also will log
   to the MIS status window whenever any messages are deleted.

 + The POP3 server will no longer wrap text at 80 columns and instead will send
   the content as is stored.

 + The POP3 server now supports opportunistic secure TLS.  A new option in
   the POP3 server settings to Force SSL only connections has been added.

 ! Fixed a bug in SMTP server that could cause a memory leak or a crash of the
   server when sending a message.

 + The SMTP server now allows for STARTTLS opportunistic TLS extensions

 + SMTP server now logs more data when max logging is enabled for MIS and also
   now logs when an e-mail is posted into the MIS status window.

 + The MN menu command now has an option /YOU which causes it to look ONLY at
   the To field to see if its addressed to you.  The personal scan option (by
   default) returns any message "From you or To you" but if /YOU is supplied it
   will return any message "To you" without checking the From portion.

 ! The G command to go to the next base during a ANSI message reader scan will
   no longer be active if the base is flagged as mandatory unless all messages
   are read.

 + MUTIL now has a -L or -LIST command which displays the header names
   that are available with the -RUN option.

 ! Fixed a bug when listing e-mail with the /unread option that could cause the
   header prompt to display multiple times.

 + The IR menu command now accepts /TERM=? to set the terminal type

 ! Fixed a bug with file list indexing that could cause strange results during
   duplicate file scans and mass uploads.  Everyone should run MUTIL's file
   pack function to regenerate their indexes:

     mutil -run packfilebases

 ! When using the View archive function Mystic will now require the user to
   pass the "Download Unvalidated" and "Download Failed" ACS to be able to use
   the Download function from within the viewer if the file is flaggged as
   Unvalidated or Failed.

 ! MUTIL's echomail export was not removing netmail.out semaphore after running

 + The "install replace" function will now also replace prompts.dat in the DATA
   folder which updates the default system prompt data.

 + New prompt #329 is displayed when entering an illegal filename when
   attempting to download a file within the archive viewer (non-ANSI)

 ! The FV archive viewer command was doing a case sensitive filename search in
   Windows version. Fixed.

 + New ACS command: "OF" returns true if its the user's first call in today
   also added in "usertcalls" to MPL and "callstoday" to the Python user
   objects.

 ! This is an A47 specific bug but I am mentioning it because some people have
   reported this one: MUTIL should no longer add an extra line at the end of
   messages when packing the message bases.

 + Echomail Nodes now have an "Uplink" flag available to be set to Yes or No
   for each node.  A new command "MIS POLL UPLINK" works similarly to the
   FORCED command, but will only force a poll of nodes with the Uplink flag
   set to Yes.

 + New MPL function "FindUser (Handle, RealName: String) : LongInt"

   This command returns the physical location of a user record in a file if
   one exists or a less than 1 value if they do not exist.  For example:

   Number := FindUser('g00r00', '');

   If Number > 0 Then Begin
     GetUser(Number);
     WriteLn('Your record has been read into User variables, ', UserHandle);
   End Else
     WriteLn('Could not find user record');

 + MUTIL's tosser will now ignore carriage returns when comparing message
   content during a duplicate message scan.  The downside of this is that it
   will require that the duplicate message database is reset.  To do this you
   must delete "echodupes.dat" from the DATA folder when MUTIL is not running
   after you have upgraded to the latest MUTIL.

 ! Mystic in Unix platforms was displaying flag1X and flag2X where X was the
   uppercased flag.  It will now display with the lower cased flag to be more
   consistant with other display files.  IE: flag1x flag2x

 ! Fixed an situation where a corrupt message in a PKT could sometimes cause
   MUTIL to crash with a 216 corrupted memory error.

 + Mystic in Windows has a new command line option -NODC when this is combined
   with passing a socket handle to Mystic, then it will not attempt to destroy
   the socket upon exit.

 + Mystic now has an option in System Configuration> General Settings to
   disable the time per day system for the entire BBS.  Note that when this
   feature is enabled, Mystic will not save modifications the user's time
   bank if they attempt to deposit or withdraw minutes.

 + New ANSI gallery (Menu action GA) replaces the old one.  This new version
   uses the new template system and is mostly the same as the old one with just
   a few quality of life changes:

     - Mouse now works inside list box
     - Behavior of the ESCAPE key is now configurable
     - Uses the newer search system and template system
     - Support for showing newer SAUCE data in list
     - Menu command syntax has slightly changed:

        Menu Command: GA
                Data: <path to files> [/TEMPLATE=mygallery] [/NOSAUCE]

        The gallery defaults to looking for template 'gallery' but it can be
        overridden by using the /template= option.  When upgrading from the
        old gallery you might need to change the optional data field slightly

   You will need to copy over the new default templates as per the upgrade
   instructions to get started.  The old ansigal* files are no longer used

 ! Fixed a bug where MIS was shutting down nodes after 24 minutes instead of 24
   hours when logged into the BBS from an external source (ie, a third party
   server or from -L local login).

 ! MIS ghost node checking for external server types has been revamped so that
   it will only shutdown a node spawned from an external process if their node
   activity status has not been updated for 24 hours.  Previously it would shut
   down any external node after 24 hours of connection even if they were still
   active.

 + The F3 menu command now allows for an /PROT=X option where X is the hotkey
   for the protocol.  This can be used to bypass the protocol selection and
   override the user's default protocol as well.

 + The F3 menu command now allows for a /NOPROMPT option which will skip the
   "Press <KEY> to begin transfer or <Q>uit" prompt.

 + Expanded the "data" field for menu commands to 200 characters in the menu
   editor.

 + MUTIL's "PackMessageBase" function will now automatically generate unique
   message IDs when packing messages if the message does not already have one.
   If you are using the NNTP server in particular you should consider packing
   your bases while upgrading so that it can make sure all the messages have
   MSGIDs assigned to them.

 + The NNTP server will now generate unique Article IDs for every message that
   works across all newsgroups offered instead of specific to each individual
   newsgroup.  This should fix some confusion with some newsreader clients but
   keep in mind you may need to clear your local cache in your newsreader as
   all message IDs will have changed.

 + The NNTP server will now automatically generate a MSGID for every message
   that it encounters if it does not already have one.

 + When posting or replying to a message Mystic will now always add a MSGID
   and TZUTC kludge line to a message, even if it is a local message or a
   non-FTN message.  Same for uploaded REP packets from BBS users.

 + Using MUTIL MsgPost should now always add a MSGID and TZUTC kludge even
   when the base is not a FTN base.

 + Users who upload REP packets via FTP and QWK networking via QWKPOLL should
   now always add MSGID and TZUTC kludges even if the base is not FTN
   (FidoNet) type.

 + NNTP server now supports NNTPS (NNTP via SSL TLS v1.2).  This was tested
   with some news readers like GrabIt successfully however there were some
   issues with SeaMonkey/Thunderbird connecting and I was not able to find
   proper documentation or logs for those readers to investigate.

 ! QWKPOLL was inappropriately creating a QWKMAIL.OUT semaphore when
   importing packets.

 ! When viewing a file and attempting to download a file from within an
   archived file, Mystic was not honoring the file bases's download ACS.

 + MUTIL EchoImport now has the ability to disable or enable circular dupe
   checking.  You can do this by setting "dupe_circular" to true or false
   in the ImportEchoMail stanza.  By default this will be enabled.
   
  <ALPHA 1.12 A47 RELEASED -- December 25, 2021>   
   

1.12 Alpha 48

  + The MUTIL FileToss TIC import now has an "ignore_case" option on operating
    systems that use a case sensitive file system.  This option defaults to
    true and when set to true, Mystic will accept case variations of the
    filename.
  
    For example: If the filename defined inside the TIC file is "MyFile.ZIP"
    but the file on disk is "myfile.zip", it will still be tossed as if they
    are the same file even though they are not on a case sensitive OS.
  
    Mystic will also dynamically update the "File" field within the TIC file
    to match the filename case of the file on disk when tossing to any
    downlinks.
  
  + Mystic will now execute an "after_login.mpx" if it exists after the user
    has logged in.  This is ran directly after the user enters their password
    and passes through all login checks and stat resets.
  
  + Mystic will now execute a "before_menus.mpx" if it exists after the user
    has logged in and went through the entire login process, just before it
    sends them to their start menu.
  
    Here is an outline of the login events:
  
      BEFORE USER IS LOGGED IN:
  
      - Connection received, ask for system password if enabled
          - Display closed.xxx if password check is failed
      - Display Mystic Version
      - Execute connect.mpx
      - Detect/ask for terminal settings
      - Ask for theme selection if ask theme on startup is enabled
      - Execute startup.mpx
          - If startup newuser then start newuser application
          - If startup userlogin then log in user and skip matrix/login
      - Execute matrix menu if enabled until user login
          - If no matrix menu then display prelogin.xxx
          - If no matrix menu then show login prompt until user login
  
      AFTER USER IS LOGGED IN (includes after new user app):
  
      - Load/reset stats, user stats, ask for new password if expired
      - The following login steps are skipped for QWK network accounts
        but are otherwise executed for normal user logins:
          - Set or ask for invisible login if configured
          - Update whos online data, add call to lastcaller data
          - Execute after_login.mpx
          - Display login1-9.xxx
          - Display sl#.xxx
          - Display flag1#.xxx
          - Display flag2#.xxx
          - Display birthday.xxx
          - Check for forced voting questions
          - Execute before_menus.mpx
      - If QWK network user goto QWK network menu
      - If standard user goto user's start menu or default start menu if user
        does not have a start menu assigned to them
  
  + Menus now have a "Reset Activity" flag in the Menu Settings.  When this is
    set to Yes, any user activity will reset the TIMER counter for all menu
    types.
  
  + Internally generated Standard menus now have a left and right margin indent
    settings for 160+ columns (was only 80 and 132 previously).
  
  + The "Start Menu" field in the Security Profile editor no longer copies onto
    the user's record when upgrading user access.  Also when creating an new
    user the Start Menu field on the user editor no longer auto populates with
    the Default start menu from System Configuration.
  
    Instead, Mystic checks the start menu for the user's security profile on
    login.  The start menu logic works as follows:
  
      IF: User's record has a custom start menu defined, use it as start menu
      ELSE: If User's security level profile has a start menu defined, use it
      ELSE: Use default start menu from System Configuration> General Options
  
    Mystic will also now log which start menu is being loaded when a user logs
    in. "Setting start menu: prelogin (Default start menu)" for example.
  
    It might be a good idea if upgrading to check your security profiles to make
    sure the start menu field is set to a blank or a value that you want for
    users with those settings otherwise users could get an error loading menu
    error when logging in.
  
  ! Fixed a few message editor display quirks that found their way into A47
    final release.
  
  + New Python function for assistance in locating display and configuration
    files:
  
      function find_display (<base filename>) : string
  
      This function takes a base filename and returns the full path and
      filename of a display file that would be displayed after applying
      the user's emulation settings, screen size, and random selection
      system to it.  If no file is found a blank value is returned.
  
      If no path is included then Mystic will use the current theme's
      display path and if nothing is found, it will search through the
      theme's configured inheritance settings to try to locate a
      matching file.
  
      If a path is included in the base name, Mystic will search only
      within that path and base filename.
  
      For example:
        filename = find_display("myfile");
  
        (In this case filename may have a value of these examples):
        c:\mystic\themes\default\text\myfile.c132x37.ans
        c:\mystic\themes\default\text\myfile.ans
  
        Because no path was used it will also search for inherited themes
        based on the theme's configuration.  Include a path to only search
        in that path:
  
        filename = find_display("c:\mystic\mydoors\myfile")
        Result then might be: "c:\mystic\mydoors\myfile.ans" etc
  
  + New Python function for assistance in locating configuration files or
    other file types using Mystic's inheritance/dynamic terminal size systems
  
      function find_config (<base filename>, <file extension>) : string
  
      This function searches for the base filename and file extension and
      returns a valid file (if found) after applying the user's terminal
      size and random selection system.  This works under the same rules
      as the find_display function but does not apply the terminal
      emulation file extensions and instead uses the extension you supply.
  
      If no path is included in the base filename then Mystic will use the
      theme's text path and perform inheritance through the theme's
      configuration.
  
      filename = find_config("myconfig", "ini")
  
      The result of this might be values such as:
      c:\mystic\themes\default\text\myconfig.ini
      c:\mystic\themes\default\text\myconfig.c132x36.ini
  
      If you want Mystic to search only in one path and not perform theme
      inheritance when it cannot find something, then include a path with
      the base filename:
  
      filename = find_config("c:\mystic\mydoor\myconfig", "ini")
  
  ! Mystic when creating a downloadable file list Mystic was leaving the user
    in the last file base that was processed instead of keeping them in the base
    they were in when the download started.
  
  + New Python function setlogininfo (username, password, new)
  
    This function works as part of startup.mps script execution to set the login
    details for automated logins via script.  It is equivalent to setting
    "UserLoginName" "UserLoginPW" and "UserLoginNew" variables in MPL.
  
  + New Python function isvalidpw (password) : boolean
  
    This function returns true if the passed password is valid when compared to
    the password policy configured in System Configuration.
  
  + Two new MCI codes to display current time in 24-hour time format:
  
      TM - Displays current time in HH:MM 24-hour format
      TS - Displays current time in HH:MM:SS 24-hour format
  
  + New Prompt #328 for the standard archive viewer command prompt, when the
    user does not have access to download files.
  
    If you have never modified prompt #328 in your themes then this prompt
    will update on its own.  If you have customized prompt #328 previously
    then you will need to reset it to the default value in the prompt editor
    for your themes that have customized it.
  
  + Mystic's BINKP server now has a default "Escape mode" option which will
    apply to any unknown connections that do not have a configuration in the
    Echomail nodes.  Echomail nodes have their own individual setting for this
    in the node editor.
  
    This setting determines how Mystic will escape special characters in
    filenames and defaults to the Auto setting.
  
    When set to Auto, Mystic will automatically try to determine the escape
    mode by using the VERSION frame sent by the mailer.  If no version frame
    is found, Mystic will use FTS standard modern \x## escape mode.
  
    When set to Legacy, Mystic will use the \## format of file escaping which
    is used in some legacy mailers such as Argus, Internet Rex, and older
    versions of Mystic.
  
    When set to Modern, Mystic will use the \x## format which is preferred or
    even required by some newer mailers such as BinkD, Radius, and BinkIT.
  
    It is highly recommended to always keep these set to AUTO unless there is
    a very specific reason not to.  The escape mode will be logged after
    authentication if the loglevel is set to Verbose or higher.
  
  + New Python function isuserpw (user_password_data, password) : boolean
  
    This function tests the password against data from a user dictionary and
    returns true or false if the password supplied matches the user's password
  
    For example:
  
      user = getuser(0);
  
      if (isuserpw(user['pwdata'], 'MyPassword') == True):
            writeln("Your password is MyPassword!")
      else:
            writeln("Your password is NOT MyPassword");
  
  ! When a bad name was found in trashcan.dat, Mystic was telling the
    applicant that the user name is unacceptable while still continuing along
    in the new user process.  It will now refuse to continue as intended.
  
  + New MCI code "NT" returns the maximum number of allowed nodes/terminal
    connections.
  
  + New MCI code "NA" returns the number of active users currently logged into
    the BBS system.  Note that this value is only updated once per 30 seconds
    and if a user on another node is invisible to the current user, then
    they will be excluded from this number.
  
  + New option for the "NW" menu command to list who's online.  If the /SCAN
    optional data is supplied, Mystic will not display the whos online list but
    instead force recalculation of active users (returned by the NA MCI code).
  
    Mystic will automatically update the NA MCI code value on its own so for
    almost everyone this will never be needed.
  
  + Fixed a bug where termtype could be chopped off or blank if longer than
    10 characters.  Also increase reliability of TERMTYPE detection in Linux
    version.  Also, apparently TermType was accidentally left out of the A47
    whatsnew:
  
    MPL and MPY both have a termtype which returns the terminal type as sent
    via TELNET and RLOGIN sessions.  This was in A47 alphas and final but was
    left out and apparently wasn't working well anyway. :)
  
  + Mystic now has a -TT command line option which will override any detected
    TerminalType from TELNET/RLOGIN. ./mystic -ttANSI
  
  + Mystic's whitelist/blacklist for IP has been renamed to allowlist and
    denylist which better describes what it actually does.  If you are
    upgrading you should rename blacklist.txt to denylist.txt and
    whitelist.txt to allowlist.txt in your DATA folder.
  
  + TRASHCAN.DAT has been renamed to "badusers.txt" in the DATA folder which
    better describes what it actually does.  If you are upgrading you should
    rename your TRASHCAN.DAT file to badusers.txt in your DATA folder.
  
  ! MUTIL FileToss was not properly handling the REPLACE keyword when tossing
    a TIC replacing a file with a space in the filename.
  
  ! MUTIL FilePack was not properly setting the OFFLINE flag when check_files
    was enabled, remove_missing was disabled, and a file was physically removed
  
  + When running MUTIL without supplying an INI file on the command line, it
    will first search for mutil.ini in the current directory but if not found
    it will now also check to see if 'mysticbbs' environment variable is set
    and then search for the path defined there for mutil.ini.
  
  + Mystic will now automatically reset the base type to Local and remove other
    network settings if you try to change them for the local mailbox base (the
    first base) using the Message Base editor.
  
  ! Fixed a bug in the internally generated menus when using a higher column
    size count.
  
  + MUTIL now has an "EchoUnlink" option which scans Networked message bases
    and sends the SysOp a report of dormant message bases.  It can also be
    configured to automatically delete the message base, generate an Areafix
    unsubscribe Netmail to your uplink, remove downlinks, and free up all
    disk space used by the dormant message echo.
  
    Because it relies heavily on a complex configuration, this feature is only
    available when you are using Mystic for your echomail tossing solution.
  
    See the [EchoUnlink] stanza in the default MUTIL.INI that ships with
    Mystic for configuration options.  Here you need to define the parameters
    that define what a dormant echo is, what actions should be taken if any,
    and what echotags should be excluded (if any).
  
  ! Fixed a bug where the /Unsubscribe option for message bases was not using
    the newer routing logic from A47.
  
  ! Fixed a bug where the /Unsubscribe option for file bases was not using the
    newer routing logic from A47.
  
  + When searching for messages, Mystic will now allow you to search for a
    MSGID.  To do so, start searching for a message as you normally would and
    enter the message ID ie "a3c8d21c" (without the quotes of course).
  
  + Mystic's last callers file will now hold the user's personal number of
    calls into the BBS.  Prompt #141 will how use &D to show this number
  
  ! When autocreating a message echo during echomail import, Mystic would
    consider inactive echomail nodes as potential uplinks when calculating
    the uplink.
  
  ! Mystic will no longer allow PKT passwords to come from inactive nodes.
    This was originally allowed so that Fix messages could be processed from
    inactive nodes.  This may change again in the future.
  
  + Message Bases now have an "Anonymous" flag and when set to Yes, all From
    fields will be changed to "Anonymous" instead of the User's name.  Auto
    signatures will not be used in an Anonymous base even if the signature is
    enabled.
  
  + To further expand on the automatic Netmail routing logic, Mystic will now
    perform a FidoNet fuzzy zone match when auto routing Netmail.  If a zone
    is between 1 and 6 they will find a match to a hub which is also part of
    a zone 1 through 6 if no other (better) routing match could be found.
  
    To reiterate: For almost everyone, there is never a need touch the Route
    field in your Echomail node editor.  If you ever want to test where a
    Netmail will route you can type "mis poll route <address>" and it will
    tell you where Mystic will route a message to that address based on your
    current configuration.
  
  + Mystic's BinkP both server and client now supports Opportunistic TLS.  This
    allows for connections on a stadard BinkP port to automatically "upgrade"
    to a secure TLS connection if both the client and server support it.
  
    Two new options have been added, one in Server Configuration and one for
    EchoMail Node Configuration:
  
    EchoMail Nodes now have an expanded "Server Type" setting under the BINKP
    configuration page.  Four possible options:
  
      Normal                  : Do not use SSL at all
      Direct SSL              : Connect with a direct SSL connection
      StartTLS (If Available) : Use TLS when available
      StartTLS (Required)     : Always require SSL connection to remote
  
    The StartTLS Required option will refuse to authenticate with any server
    that does not offer the opportunistic TLS upgrading.
  
    BINKP Server Configuration now has a new "Allow StartTLS" option which
    determines how your server will operate.  Possible options are:
  
      No     : Never allow opportunistic TLS connections
      Yes    : Offer to use TLS connection with clients when available
      Forced : Require a secure SSL/TLS connection with client always
  
    The Forced option will cause the BINKP server to refuse any connection that
    is not TLS.  The client must connect via Direct SSL or on the standard port
    and then upgrade to TLS.  All non-secure clients will be refused.
  
    As usual these features will require that CryptLib is present and detected
    by Mystic.
  
  + New door command line MCI codes: %X and %Y return the user's terminal size
    (X and Y) and %E returns the user's terminal type (if known)
  
  ! CHAIN.TXT was always writing column 80 even when the user's terminal size
    was larger.  It should now write the proper column size.
  
  ! PING responses were not including the PKT password when sending to a node
    with PKT passwords enabled.
  
  ! Fixed a bug in file indexing that was causing duplicate file searching and
    mass uploads to behave strangely within Mystic BBS (MUTIL was ok).  As a
    result everyone should run "mutil -run packfilebases" to regenerate the
    indexes properly.
  
  + Mystic event editor now has a /Move option similar to what is found in the
    message and file base editors.
  
  + Mystic events now have an option to automatically prefix command line calls
    in Linux with "./" which can be configured on a per-event basis.
  
  ! Mystic's online mass upload will now rename files longer than the current
    maximum filename length if a file is found to be longer than whatever the
    current maximum allowed length is.  This was intended but was only working
    for traditional uploads and blind uploads.
  
  + MUTIL's Mass Upload now has a "length_rename" option which defaults to
    TRUE.  When set to true, Mass Upload will automatically rename filenames
    that are longer than the maximum allowed filename.
  
  + MUTIL's Import FILES.BBS now has the option to support description wrapping
    when importing single line file definitions where the first word is the
    filename (this format cannot support spaces) followed by a long line of
    text that is the file description.
  
  + When importing TIC files, Mystic will now wrap the DESC tag when using it
    for a file description.  The DESC tag is only used when a file has no
    FILE_ID.ANS/DIZ, and there is also no LDESC tag in the TIC file.
  
  + By request: Added a "botcheck.mps" which is a small MPL script to force the
    user to press escape twice immediately after connecting.  Rename to
    connect.mps and compile in your scripts directory (assuming you are not
    already using a connect script) if you wish to use it.
  
  + The !C menu command to create a semaphore now adds three lines of text to
    the semaphore file:
  
      Line 1: User ID
      Line 2: User Handle
      Line 3: Node number
  
    If no user was logged in when this was created the ID will be -1 and the
    handle blank.
  
  ! Fixed a bug in Message Base packer that could cause LR pointer to be set
    incorrectly when packing/purging a huge amount of messages.
  
  + BINKP will now show periodic updates during file transfer, updating roughly
    every 10 seconds during the transfer.  BINKP will also log a confirmation
    line when a file is confirmed to be sent or received instead of only at the
    start.
  
  + BINKP now has the ability to limit the bandwidth used when sending or
    receiving files.  Setting any of these values to 0 disables the limit
    and causes them to operate at full speed.  Any non-zero value sets the
    maximum rate in Kilobytes (KB) to use for the connection.
  
    Two new options have been added to the BINKP Server configuration as well
    as in Server > General Settings for MIS POLL and in EchoMail nodes for
    specific nodes to override those other settings:
  
    BINKP Server setting: (Server > Servers > BINKP)
  
  Download speed limit (for your server when you receive files)
  Upload speed limit (for your server, when you send files)
  
    MIS POLL setting (Server > General Options):
  
  Download speed limit (for your client, when you receive files)
  Upload speed limit (for your client, when you send files)
  
    EchoMail Node setting (Overrides MIS POLL/BINKP settings if enabled):
  
  Download speed limit: (Used when you receive files from this node)
  Upload speed limit: (Used when you send files to this node)
  
  + BINKP clients will now respond to a LIMIT frame sent from the remote
    connection which allows the receiving server to tell the sender the rate
    that it would like files to be sent.  Mystic will not accept a LIMIT frame
    less than 2KB (1024 x 2 bytes) and will set anything lower than that to
    2KB.
  
    This is helpful when using bandwidth limits because it is possible for the
    sending system to send all of the data for a file at full speed into the
    Internet void and then timeout while waiting for a response. (This happens
    if the server is using a limited bandwidth and hasn't actually received the
    file within the sender's timeout period).
  
  + EchoNode editor now has a Global editor for editing some values across many
    tagged Echomail nodes, including the new node-specific bandwidth limiters.
  
  + BINKP received/sent messages will now show how long a file transfer took up
    to the hundredth of a second in its log messages.
  
  + The AREAS.BBS export in MUTIL now has a "net_only" option which when set
    to false will cause MUTIL to export all bases in AREAS.BBS not just the
    Networked bases.
  
  + The default value for the "To:" field when posting a message is now
    configurable on a per-theme basis.  The value of prompt #104 will now be
    used as the default for the To field.  If you've never modified this then
    you don't have to do anything but you may need to reset it to default in
    the prompt editor otherwise.
  
  + MUTIL ImportEchoMail now has a "dos_filename" option that can be used to
    create JAM filenames in the DOS 8.3 file format.  Valid options are:
  
      0 = Do not use 8.3 filename (uses echotag for filename)
      1 = Use shortened 8.3 filename (trimmed based on the echotag name)
      2 = Use random hex 8.3 filename
  
  + MUTIL GoldEd export now has an option to set the group value which can be
    up to 6 characters/numbers.  This value will be used in the Group column
    when exporting data.
  
  + MUTIL GoldEd export now has the option to define a zone and if set to a non
    zero value will only export bases where the base's network address matches
    the configured zone (use if you only want to export FidoNet for example).
  
  + MUTIL TopList will now allow @RN to be used in the template to show the
    user's real name instead of @NA which uses the user handle.
  
  + The Message Base editor now has a /B option to Select By Network.
  
  + The File Base editor now has a /B option to Select By Network.
  
  ! Mystic default install was accidentally installing a startup.mps and
    startup.mpx file.  If you are not already using a custom startup script
    then you should make sure to delete them from your theme's scripts
    directory as they are not intended to be included or installed.
  
  + FTP server now has an option to test uploads in server options.  Use @FN
    to replace with the path and filename of the upload for tests.  Failed
    tests will end up in the file listings flagged as "Failed"
  
  + The FTP server will now send robots.txt from the DATA folder if any FTP
    client requests it at the root directory.  The default install will now
    include a robots.txt that denies all crawling.
  
  ! FTP server was failing when changing directories to any FTP directory name
    that had a period in the name.
  
  + New MCI code: DN returns the configured BBS domain name
  
  + New .INI file can be placed in a Theme's text directory or in the DATA
    folder to allow customization of the validate e-mail address e-mail
    contents.
  
    The default installation now comes with a emailval.ini file in the DATA
    folder which can be used to learn more.
  
  + New .INI file can be placed in a Theme's text directory or in the DATA
    folder to allow customization of the password reset e-mail contents.
  
    The default installation now comes with a resetpw.ini file in the DATA
    folder which can be used to learn more.
  
  + The Coord1 in the message editor template (msg_editor.ini by default) now
    defines the text attrbute used when doing things such as line clears.  This
    option inheritantly allows for editors with non-black backgrounds to
    function as expected.
  
  ! Creating a user in the user editor was not properly setting their tagline
    default setting.
  
  ! Mystic will no longer show "user is marked unavailable" message when sending
    a system broadcast to a node with message availability disabled.
  
  ! When paging another user for user to user chat, Mystic will no longer show
    that the node is unavilable if enter is pressed on the node number prompt.
  
  ! Mystic will no longer display "This base is marked mandatory" when toggling
    all bases on or off in the scan settings for message/file/qwk bases.
  
  ! MIS was not properly returning the "OV" ACS command result when evaluating
    ACS strings.
  
  ! The badusers.txt check was case sensitive when it should have been
    insensitive
  
  + FTP server now logs if an upload test passes or fails and the result code
    when it does fail.
  
  ! Mystic user to user split and line chats were not exiting properly if the
    remote user dropped connection.
  
  ! Netmail PING responses were not properly setting the message date field
  
  ! Fixed a bug where MUTIL could add a 0:0/0 address in the VIA kludge when
    routing Netmail between FidoNet zones.
  
  ! MIS FTP server was allowing logins when the user was flagged locked out
  
  ! MIS SMTP server will now refuse to allow e-mail sent from any user who
    is locked out.
  
  ! MIS NNTP server will now refuse to allow logins from locked out users
  
  ! MIS POP3 server will now refuse to allow logins from locked out users
  
  ! Fixed a number of bugs when toggling QWK network scan settings for a QWK
    network user.
  
  ! Fixed a number of bugs when toggling new scan settings with compression
    turned off.
  
  + Mystic now tracks the number of doors opened by a user when using a DOOR
    menu command.  Door command lines can have a /NOSTAT at the end of the
    command line in optional data to tell Mystic not to increment the users
    door count.
  
  + New ACS commands:
  
      O1 : True if user posted during this call
      O2 : True if user sent local e-mail during this call
      O3 : True if user uploaded during this call
      O4 : True if user downloaded during this call
      O5 : True if user opened a door during this call
  
  + Mystic now updates callers.dat (Last caller information) when exiting the
    BBS to include some additional statistics:
  
      Time spent online (Stored in seconds. 0=Still online)
      Number of posts made during call
      Number of emails sent during call
      Number of files uploaded
      Number of file data uploaded in kilobytes
      Number of files downloaded
      Number of files downloaded in kilobytes
      Number of doors opened
      Current state at logoff of all access flags (set 1)
      Current state at logoff of all access flags (set 2)
  
      The 10 optional user data fields are also saved when the user logs out.
      Along with flags, these can be used to track custom data throughout a
      session.
  
  + Menu editor will now pop up a notification if you reach the max number of
    action items per menu command and try to paste or insert a new command.
  
  + User access flags and Echomail node security flags now have a new editor
    which allows for more ways to toggle flags and also allows for a
    description to be assigned to each flag.
  
  ! The NA imports in MUTIL were accidentally dupe checking against the
    filename not the EchoTag, causing the import to not catch duplicates in
    some situations (where filename was not equal to the echo tag).
  
  + New MCI code FLxx retuns the ON/OFF prompt depending on the user flag
    state.  The xx defines the set and the flag, for example: FL1A would
    return on/off state of the user's A flag in flag set 1.
  
  + New MCI code FDxx returns the flag description where xx defines the set
    and the flag.  For example FD1A would return the description for flag
    set 1, flag A.
  
  + New MCI code HXxx sends a hex byte. For example ASCII 254 is FE in
    hex so HXFE would send out ASCII 254.
  
  + Built a new Python loader which will do better at trying to find your
    Python information when the Python2 and Python3 library paths are not
    set in System Configuration > General Settings.  Leaving those two blank
    should now be more likely to work.
  
  ! Fixed a bug in user to user split screen chat where backspace was not
    updating in the terminal.
  
  ! Fixed a bug in user to user split screen chat where the screen could get
    corrupted and go crazy if the user was doing something that used the newer
    template format (such as posting a message in the editor, ANSI viewer, etc)
  
  + Optimized MUTIL's LinkMessages function to increase speed
  
  + The "MIS POLL SEARCH" (replacement for the same function in FidoPoll) was
    accidentally missing.  Its there now.
  
  + I noticed that pipedoor.ini is not mentioned in the whats new.  I don't
    remember when it was added, but Mystic creates an ini-like door drop file
    called pipedoor.ini.  The idea behind this is that it can easily be expanded
    on with additional fields since it uses a key=value pair on each line.
  
    There is a doorkit I was working on with the same name that may be released
    at some point.
  
  + New MCI code: LF loads the last font.  Reminder: Font MCI codes only
    work when a theme's font is not set to Disabled.
  
  + New MCI code LC loads the last color mode (ICE/Blinking).  Reminder: Color
    system MCI codes only work when a theme's color mode is not set to Disabled
  
  + Mystic now reads column information from SAUCE when importing FILE_ID.ANS
    files and uses them to render if found.  This fixes some "broken" ANSI
    file descriptions found in some art packs that were saved in an odd column
    size like 44 characters.
  
    If you see an ANSI description that isn't showing properly, edit it while
    listing files and press I to reimport the DIZ to possibly fix it.
  
  + Mystic will now switch fonts and color modes if a theme has font and/or
    color modes set and an ANSI .DIZ file description has SAUCE with font
    or color information.
  
    This means listing files in an Amiga font with blinking text, Mystic will
    switch to CP437 and ICE colors just for the ANSI description and then
    revert back to the previous font/color mode.  The result is ANSI
    descriptions showing properly in Amiga themes and Amiga descriptions showing
    properly in ANSI themes.
  
    Here is a screen capture to demonstrate: https://postimg.cc/TptgGzn6
  
    In the screenshot, the theme is Amiga font yet Mystic enables ICE and
    CP437 just to display the description because the FILE_ID.ANS has SAUCE
    information that explains it should be CP437 with ICE colors.  Note the
    prompt and filename in Amiga font while description is ANSI
  
    Note: Existing ANSI file descriptions need to be reimported before they
    will work.  Files that were imported to the BBS before Mystic was SAUCE
    aware will not have these new features and fixes.
  
  ! Fixed a bug that was causing IPV6+IPV4 (Default IPV6) to not properly
    fallback to IPV4 if the IPV6 connection failed.
  
  + New MCI code |SI returns the "ID" of the server that the user connected
    through (as defined in the Server Configuration) or blank if the connection
    did not source through MIS.
  
  + New command line -SID<name> allows an 8 character ID to be passed to Mystic
    which will become the value of the |SI MCI code (for use with a 3rd party
    server).
  
    <ALPHA 1.12 A48 RELEASED -- January 15, 2023>
  
whats_new_112.txt · Last modified: 2023/01/18 01:15 by avon

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki