Changes in 2.50
===============

Enhancements
------------

        * Added the ability to allow the sysop define the default 
          response for a Yes/No prompt. Select a language in the 
          language editor, and edit the text. As you scroll through
          the prompts, watch the character to the immediate left of
          the prompt number at the top of the screen. This character
          can be one of four, and has the following meaning:

          <Space> - Normal prompt, display only.
          *       - Prompt has keys associated with it (ie. requires
                    a multiple-choice response).
          Y       - Prompt is a Yes/No question, the default is Yes.
          N       - Prompt is a Yes/No question, the default is No.

          Editing a Yes/No type prompt will give you the opportunity
          to select the users default response (ie. what happens when
          the user presses Enter). Note that the Y/N character displayed
          at the top of the screen indicates the system default, not
          necessarily the default which is currently selected.

        * File and message areas/groups may now be moved, copied, 
          deleted, etc. 

          NOTE! File/message areas/groups now retain their own area
          or group number regardless of what order they appear in
          RACONFIG. Moving areas so that the numbers are no longer
          sequential is okay. This means that moving areas does not
          require you to renumber your menus, message-base, or 
          file-base. When selecting an area, the user WILL see 
          sequential area numbers (for ease of use). The area number
          that a user thinks he/she is in is not necessarily the
          same as the ACTUAL area number defined in RACONFIG. These
          two separate sets of area numbers are automatically mapped
          to one another.

          You will notice a number of new options in RACONFIG when
          any one of the first four manager options is selected:

          Enter  - Edit the highlighted area.

          Space  - Drop the tagging anchor to select a range of entries
                   (as in RAMGR.Files).

          INSERT - Insert a new area at the current position. This will
                   cause all entries after the new entry to be moved
                   down by one position.

          DELETE - Delete the current area/range of areas. All entries
                   after the deleted area(s) will be moved up to close
                   the gap left by the deleted areas.

          Alt-M  - Move the currently selected area(s) to another 
                   position. You will be asked to specify the new
                   position at which to insert the areas.

          Alt-C  - Same as Alt-M, but duplicates the areas instead of
                   just moving them.

          Alt-G  - Perform global changes to the currently selected
                   area or range of areas. You will be presented with
                   a blank edit screen which looks exactly like a
                   normal edit screen. (NOTE: The edit screen will 
                   automatically 'inherit' the values from the record
                   that was last edited.) Edit the fields which you want
                   to apply to the selected areas. You will notice that
                   after editing a field, it will be flashing. Note
                   that only flashing fields will be applied to the
                   selected areas. To toggle whether a field is
                   flashing, move to it and press the space bar. Press
                   ESCAPE to apply your changes.
           
          Press F1 at any area/group edit screen to modify the number
          of the currently displayed entry. NOTE: By default, RACONFIG
          will not allow duplicate area or group numbers to be entered.
          Placing a -N on RACONFIG's command-line will temporarily
          disable the dupe checking.

        * New textfile control codes:
        
                ^K$ - Number of callers today.
                ^K% - Handle of last caller.
                ^K& - Number of files currently tagged.
                ^K' - Total kilobytes of tagged files.
                ^K( - Name of currently selected language.
                ^F^ - Current session time limit.
                ^F_ - Time remaining this session.

        * Added a user flag which enables the user to determine
          the scope of a mailbox scan. The default behaviour is
          to check all areas the user has access to. Enabling 
          this option will limit the scan to only message areas
          which the user has enabled is his/her combined settings.
          This option is toggled with menu type 75, and its 
          textfile control code (ON/OFF) is ^F-.

        * During file transfers, ALT-J as well as all the ALT-Fn 
          keys are now automatically disabled.

        * The *U parameter for a type 7 command, to place a custom
          message in the "who's online" list, is now valid for menu
          types 1 to 4.

        * It is now possible to pre-define the width of any textfile
          control code. Simply place one '.' character between the
          ^K/^F and the second part of the code for every additional
          space you would like the field padded with.

          Example: ^FA 
                    Displays the users name.

                   ^F....................A 
                   Displays the users name padded with 20 spaces.

          If the field is longer than the defined number of spaces,
          it will be truncated. Text fields are always justified to
          the left, and numerical fields are always justified to the
          right.

        * Added an option in the menu editor (in the ALT-P edit
          window from the menu edit screen) to not append the
          global menu (GLOBALRA.MNU) to the menu currently being
          edited. The default is to always append the global menu
          to every menu.

        * Textfile control codes are now valid for all menu item
          optional data fields.

        * Added a new command to the questionnaire language - COMMIT.
          Normally, user responses are stored in a buffer and 
          written to disk when the questionnaire terminates. The
          COMMIT command will force the contents of the buffer to
          be written to disk immediately.

        * Normally, questionnaire responses are written to a file
          called nnn.ASW (where nnn is the original questionnaire 
          name) in the system directory. A new command, DEFINEOUTPUT,
          allows the sysop to specify the name of the output file.
          The format is DEFINEOUTPUT <filename>. 

          Example: DEFINEOUTPUT C:\RA\ANSWERS\NEWUSER.TXT

        * Implemented Netware IPX support for real-time conferencing.
          To enable IPX support, simply use the new -I command-line
          parameter when loading RA.

        * Real-time conferencing now sends users messages only
          when they press (Enter). This prevents users from
          'interupting' one another, and makes large conferences
          more readable.

        * New option - RACONFIG.Options.Files.Logoff warning, if
          enabled, will warn a user who is about to logoff that
          he/she has tagged files. The user will be given the
          opportunity to return to the system.
          
        * FILE_ID.DIZ type descriptions are now displayed without
          automatic word-wrapping. A FILE_ID.DIZ description is
          defined as not having any lines which exceed 45 characters
          in length.

        * Added an option (RACONFIG.Options.System.Limit local)
          to disable the use of all sysop keys during all user
          sessions (this includes local logons). This effectively
          means that users who log on locally have no more power
          than those who log on remotely.

        * Encrypted passwords are now optional, and are enabled
          or disabled by setting the new 'Save password' option
          in RACONFIG.Options.System. Setting this option to 'Yes'
          will force RA to store passwords as regular text in the
          user-file, as with versions prior to 2.0x.

          NOTE: Because RA cannot convert an encrypted password
          back into straight text, the actual password cannot be
          stored/used until the user has logged on at least once.
          RAMGR will show user passwords as 'Not visible' until you
          press (Enter) on the Password field. You will not be
          able to view a users password until either:

          1. The user has logged on at least once since 'Save
             password' was enabled.

          2. You enter a new password for the user with RAMGR
             yourself.

          DEVELOPERS: If the 'Save password' option is enabled,
          the following rules should be observed when editing/
          viewing passwords:

          1. When entering a new password, the PasswordCRC field
             must be updated as well as the actual Password field
             in the user record.

          2. Only assume that the Password field is correct if
             it matches the PasswordCRC field. If the two fields
             do not match, do not allow the password to be viewed
             as it is probably incorrect. Offer only the ability
             to enter a new password.

        * The file list format may be temporarily overridden
          for both the 'list files' and the three file search
          menu commands, on the command's optional data field.
          This makes it possible to have several file list
          commands (for example) available to the user each
          with different list formats (brief/verbose/etc).

          Simply specify the desired list format immediately 
          after the /A= parameter.

          Example: Type 31 (list files)
                   Optional data: /F /T /A=@NE @DF

          The above command would list files in the current
          area with tagging enabled, using the alternate file
          list format shown. NOTE: The /A= parameter must be
          the last parameter specified.
                   
        * The internal delay function in RA now timeslices while
          waiting for the timer to expire.

        * RA now makes a log entry when a user is disconnected
          because the logon speed is too slow.

        * Added two new commands to the questionnaire script
          language; GOSUB and RETURN. GOSUB has one parameter -
          the name of the label to branch to. When a RETURN
          command is encountered, the interpreter will branch
          back to the command immediately following the last
          GOSUB command. GOSUB commands may be nested up to 50 
          levels deep.

        * Added a new option to auto-hangup a user if (Enter)
          is pressed on a blank line at the login prompt more
          than a certain number of times. Set the RACONFIG.
          Options.System.Blank logins option to the maximum
          number of tries. Leaving the field set to 0 disables
          this option.

        * The Keyword file search menu command now accepts
          multiple search keywords. If more than one keyword
          is specified in the search criteria, the words are
          ANDed together.

        * Added a 'Scanning messages, please wait' prompt to
          the language file.

        * Hitting (Enter) during a RTC will now cause a brief
          help message to be displayed.

        * Changed the default behaviour of the "Terminal" setting 
          on the menu item screen; if "ANSI" is selected, the option
          will only be made available to the user if RIP is *NOT*
          enabled. To make the option available to RIP users,
          the "RIP" setting must be enabled separately.

        * The "Assign" questionnaire command now accepts other
          variable numbers preceded by the '#' character. For
          example:

                Assign 2 #5

          This command would copy the contents of variable 5
          into variable 2.

        * Removed support for the @ and ` characters in menus to
          display current msg and file area names. There are
          textfile macro equivalents which work in menus, and the
          expansion of these characters causes problems for
          certain applications.

        * Added new fields to the LIMITS settings to extend the 
          accounting system:

                FlexTime - If set to a non-zero value, then the
                           user will be permitted to stay online
                           after his/her daily time limit has been
                           exceeded, however the amount specified
                           will be deducted from the users credit
                           balance every minute. The user will be
                           disconnected when his/her credit balance
                           reaches zero, unless post-billing has
                           been enabled in the users record.

                Session  - Sets the maximum amount of time a user
                           may stay online per session (as opposed
                           to per day).

                Reset    - Enables the sysop to automatically deduct
                           or add credits to the users account via
                           RAUSER at regular intervals. Options are
                           Never, Weekly, Monthly or Yearly.

                ResetOfs - Determines on which day of the period
                           specified in the Reset option that credits
                           will be deducted or added to the users
                           account. (Eg. 1 = First day of the Week/
                           Month/Year).

                ResetAmt - The amount to apply to the users account
                           if the Reset option is activated. A positive
                           amount will add to the users credit balance,
                           a negative amount will subtract.

        * The textfile FLEXTIME.A?? will be displayed when the user
          switches from regular time to flexitime (if the option is
          enabled).

        * RAUSER -R will cause RAUSER to update user account
          balances according to the new options in LIMITS. A pack
          will be automatically performed if not otherwise 
          specified.

        * Pressing PgUp and PgDn on the numeric keypad while a 
          user is online will increase and decrease respectively
          the users time-limit for the current session only.

        * The (F1) status line has been enhanced to show both the
          users daily time limit, as well as the time limit for the
          current session only. If the time limit for the current
          session is LESS than the overall dail time limit, it will
          be displayed to the right of the daily time limit. Eg:

                Time: 90/30

          .. would indicate that the users daily limit is 90 minutes,
          and there are 30 minutes remaining before the user will
          have to log off and call again. Note that if the user goes
          into 'overtime' due to the FlexiTime option, this will
          be indicated by a negative number on the left:

                Time: -25/15

          .. would indicate that the user has gone overtime by 25 
          minutes, and the time limit for the current session will 
          expire in 15 minutes.

        * Added support for the RIP 2 standard. Callers using RIP 2
          compatible terminals will be sent .RI2 textfiles, if they
          exist. RIP 2 compatibility is indicated on the (F1) status
          bar.

        * Added a path in RACONFIG.System.Paths to indicate where
          RIP icons are stored.

        * New menu command (type 76) : Display a RIP icon. This can
          be used to display a RIP icon to the user. There are several
          parameters that may be used on the optional data field:

                /FILE=<filename> - Filename of the icon to display.
                                   If omitted, a plain button will
                                   be drawn. NOTE: Specify the filename
                                   only; the RIP path (see above) is
                                   automatically added.

                /LABEL=<Text>      Line of text to display with the
                                   button. If the button is an icon,
                                   the text will be displayed below the
                                   image, otherwise the text will be
                                   displayed in the centre of the button.
                                   UNDERSCORES WILL BE REPLACED WITH SPACES.

                /LABELCOL=<cc>     Colour in which to display the 
                                   button's label.

                /HOTKEY=<x>        Hotkey to simulate when the button
                                   is clicked by the user. If no hotkey
                                   is specified, the button will not
                                   be clickable.

                /X=<x>             X-coordinate at which to display
                                   the button. REQUIRED PARAMETER.

                /Y=<x>             Y-coordinate at which to display
                                   the button. REQUIRED PARAMETER.

          Example:

            Menu type 76
            Opt data: /FILE=EMAIL.ICN /X=100 /Y=100 /HOTKEY=M LABEL=Msg_Menu

          This would display the icon EMAIL.ICN on the users terminal at
          coordinates (100,100), with the text "Msg Menu" below it. When
          clicked, the BBS would act as if the user had pressed the 'M'
          key.

          If the button is an icon, this command will automatically check
          to see if the user already has the icon file, and if necessary,
          send it automatically.

        * Added support for modem speeds 31200 and 33600 BPS.

        * All messages posted after a user enters an 
          incorrect login password are now forced to Private.

        * Added an option in RACONFIG.File Options to include
          CD-ROM file areas in a new files scan.


Bug fixes (post- GAMMA)
----------------------

        * RACONFIG now checks that the RIP icon path is
          valid.

        * The "You have exceeded your timelimit.." message
          was sometimes displayed twice to a user before 
          disconnection. Fixed.

        * If New User IEMSI was disabled and a new user
          logged in using IEMSI, the user would not be asked 
          for a password during the new user login sequence.
          Fixed.

        * When creating a new filebase directory, RACONFIG
          now creates the IDX/HDR/TXT subdirectories 
          automatically.

        * Fixed a nasty bug which would cause RACONFIG to
          crash when deleting FDB files.

        * RACONFIG would incorrectly report that a group
          number was already in use even if it wasn't. Fixed.

        * Editing a group/area number with the F1 key, and
          then aborting by hitting ESCAPE would still save
          the changes. Fixed.

        * The control codes to show session limit and session
          time remaining now display their daily equivalents
          if session limits are not enabled for the current 
          user.

        * RA was not taking session limits into account when
          writing the DOOR.SYS and DORINFO1.DEF door files.
          Fixed.

        * If a user's session time left was greater than
          his/her overall daily time left, RA would incorrectly
          display the session time left as the user's
          remaining time for the session. Fixed.
        
        * If flexitime was enabled and a user had a zero or
          negative credit balance, the session would be
          terminated immediately, even though the user's
          daily time limit had not been exceeded. Fixed.

        * After a DOS shell, the ^KM and ^FU control codes
          would return incorrect values. Fixed.

        * The upgrade procedure did not correctly fill in
          the new baudrate connection fields. Fixed.

        * If a user selected a msg/file area whose primary
          group number was different to the users current
          area (ie. it was chosen from one of it's secondary
          groups), the users current group would be changed
          to the area's primary group. Fixed.

        * The control codes to display session time info
          now return '0' if session times are not configured
          for the current user, rather than a blank.

        * Reduced the memory requirements for the new archive 
          viewing code.

        * If a user posted a message to another user who was
          currently on-line, the recipient would only be
          notified if the message was addressed to his/her
          real name, not the handle. Fixed.

        * Added timeslicing support to the RTC.

        * Trying to view a file which was not currently 
          displayed in a file list would cause unpredictable
          results. Fixed.

        * RAFILE CLEAN did not correctly account for file
          areas which had been moved and re-indexed. Fixed.

        * Deleting file areas in RACONFIG would sometimes
          delete the wrong FDB files. Fixed.

        * RA would not correctly display the contents of a
          self-extracting ARJ 2.50 archive. Fixed.

        * Selecting an invalid area from the message area
          selection menu command would produce unpredictable
          results. Fixed.


Bug fixes (pre- GAMMA)
----------------------

        * Fixed a nasty bug which would cause an internal JAM
          buffer to not be deallocated if RA could not create
          a JAM area which did not exist.         

        * Fixed a small cosmetic bug in the position indicator
          during a file transfer.

        * It was possible for RemoteAccess to delete files in 
          the root directory if a message was deleted that had
          a blank subject line with the file attach flag
          enabled. Fixed.

        * Fixed a bug in RAMGR which would cause the adopt files
          screen to screw up if files were tagged in the current
          area.

        * Fixed a bug which would cause the screen to screw up
          if ALT-D was pressed in "waiting for call" mode.

        * Fixed a bug which caused the message 'WARNING -- THIS
          USER ENTERED AN INVALID PASSWORD' to be incorrectly
          added to the top of return receipt and duplicate
          telephone number warning messages.

        * RA now correctly updates the users location in the 
          USERON file if edited via ALT-E.

        * Previously, if a user asked to turn on ALL message
          areas for combined reading, RA would select message
          areas 1 to 200, regardless of whether the areas were
          active or not. This has been fixed, so RA now selects
          the first 200 active areas only.

        * The group mailing function would not correctly
          process security levels greater than 999. Fixed.

        * It was possible for a user to receive the same online 
          message more than once if the internode message
          semaphore could not be deleted. The semaphore is
          no longer deleted, rather it is truncated to zero
          length. This should fix the problem.

        * A WaitEnter command would not work in a questionnaire
          if preceded by a menu command 72 (change default
          protocol). Fixed.

        * Internet email messages may now be marked as kill/sent
          and file attach.

        * The RACONFIG.Options.System.Telephone scan option
          was previously ignored. This has been fixed.

        * Older versions of RAMGR would not accept the root
          directory of a drive as a valid file path. Fixed.

        * Using the sysop message adjustment menu ('*') while
          reading messages in an area whose number was greater
          than 255 caused unpredictable results. Fixed.

        * The Read Messages function was previously not showing
          the 'Sent' attribute for echomail/newsgroup messages 
          that had actually been exported. Fixed.

        * When a file/message area/group edit window became
          inactive, sometimes the area number displayed in the
          header would be displayed incorrectly. Fixed.

        * It was possible for the 'Time' field in the file
          transfer window to be truncated if it exceeded five
          characters. Fixed.

        * If a user tried to reply to an echomail message via
          netmail, but did not have access to any netmail areas,
          RA would post the reply in the current echomail area.
          This has been changed so that the posting process is
          now simply aborted.

        * RA now requires message posted in an Internet email
          area to contain either the '@' or '!' characters.

        * If a user did an ALT-P in RAMGR.Files to copy the 
          current file to a path, and entered the same path
          that the file was already in, the file would be
          truncated to zero length. Fixed.

        * Previously, RA did not apply the FlatCost or TimeCost
          fields to menu types which were auto-executed, as 
          opposed to those selected by the user. Fixed.

        * The nodelist browser now supports zones above 255, as
          well as an unlimited number of zones/nets/regions.

        * RA would not properly recognise the '!' character in
          an Internet address. Fixed.

        * Users' upload credit amounts would be calculated
          incorrectly if a transfer started before midnight and
          finished after midnight. This has been fixed.

        * Users would not receive online messages while in
          real-time conferencing. This has been fixed.

        * Users' birthdates were incorrectly extracted from
          IEMSI logon sequences. Fixed.

        * Rewrote RA's command-line parser to be more bullet-
          proof when parsing extended modem connect strings.

        * The @, ~ and ^ characters would be translated into
          their menu control code equivalents in online 
          messages at the receiving node's end. Fixed.

        * Previous versions of RAMGR could not pass a filename
          that contained the '@' character to the command-line
          from a function key. Fixed.

        * Fixed a bug which caused RA to ignore certain FTS
          kludge-line subfields in a JAM message.

        * Fixed a cosmetic bug which would cause filenames to
          be overwritten when validating file passwords, if the
          default colour of the 'Password' prompt was changed.

        * RA would not count external downloads if the files
          downloaded were listed in lowercase characters in
          the FDB. Fixed.

        * RAMGR.Files 'Update' would place the path of the file 
          area into any blank lines currently tagged. Fixed.

        * RAFILE would still not list files from the previous
          year with the /D option. Fixed.

        * Fixed a bug which would cause questionnaires to 
          sometimes not branch correctly to a label when a
          GOTO command was executed.

        * Attempting to output more than 50 lines of output to
          the .ASW file of a questionnaire would result in
          garbage being written. This has been fixed.

        * Posting a message to '@All' in an area which forces
          users to use handles now addresses each message to
          the users handle, rather than real name.

        * Revamped the download ratio code. All file ratios
          should now be enforced correctly.

        * Menu type 43, 'show message areas with new mail',
          did not honour the /MG command on the optional data
          field. Fixed.

        * Trying to download file attaches which did not exist
          could cause the system to appear to have locked up. 
          This has been fixed.

        * External downloads were not updating users' credit
          balances. Fixed.

        * The character '?' is now treated as invalid in a
          birthdate.

        * Returning from a shell, RA previously did not correctly
          re-read the sizes of free files from the taglist. Fixed.

        * RAFILE COMPRESS did not cope too well with blank
          description lines, and would sometimes generate garbage
          in the file database. Fixed.

        * Previously, turning off the (Exported) flag on an     
          echomail JAM message via the sysop message menu did not
          work. Fixed.

        * When tagging files, the "Sorry, this file would
          exceed your.." message would be seen locally, but
          sometimes not remotely. Fixed.

        * Fixed a bug in the JAM .IDX scanning code.
          Previously, if RA encountered a deleted message
          when doing a forward scan, it could 'drop out'
          of message reading mode. Fixed.

        * Fixed a bug in the parsing of menu command optional
          data from questionnaires.

        * Fixed the ARJ viewing bug.


     RAMSG 2.50.b4
     =============

     * When purging messages in the Hudson message base by date, RAMSG will
       now treat dates where the year is smaller than 80 to be in the 21st
       century (20xx).

     * If RAMSG Pack aborts due to an error while packing a JAM base, it
       will now clean up the temporary <basename>.$xx and <basename>.SWP
       files.

     * Added detection for Windows 95 and DESQview/X.

     * The Purge command no longer uses existing information when purging a
       JAM base by number of messages, instead it builds new index files,
       which is safer than relying on the old index files and "ActiveMsgs"
       value.

     * The Index and Purge commands will now set the HdrOffset in the index
       record of a deleted message to -1.
