Revision history for Digital Distortion Login Matrix:

Version  Date         Description
-------  ----         -----------
1.31     2026-01-22   For the theme configurations, the MenuBorders option is no
                      longer used, in favor of 4 separate options:
                      InitialMenuBorder, LoginNameBoxBorder,
                      LoginPasswordBoxBorder, and LoginStatusBoxBorder. Also,
                      the DDLoginMatrixThemes directory is now called themes,
                      and the DDLoginMatrixLangFiles directory is now called
                      langFiles.
1.30     2026-01-21   Don't use the guest account for emailing the sysop
                      anymore, because if multiple users do that, only the last
                      email address would be used for the reply-to address.
1.29     2025-10-24   For themes that have image files for the backgrounds
                      (jpg/png/etc.), a sixel cache directory in the theme
                      directory (called sixel_cache) will now be used to store
                      the converted sixel files for the user's terminal size so
                      that displaying those sixels will be faster for future
                      connections with that terminal size. A new script,
                      rm_sixel_cache_dirs.js, is also included, which removes
                      any of the sixel cache directories from the theme
                      directories if you want to recover some drive space.
1.28     2025-04-08   For image-to-sixel conversion, support for using "magick"
                      instead of the assumed "convert". Also, support for spaces
                      in the fully-pathed sixel converter executable, on Windows
                      for now.
1.27     2024-11-03   If a sixel version of a theme background doesn't exist,
                      then check whether an .ans or .asc version exists before
                      calling bbs.menu(), to avoid a warning displayed to the
                      user if it doesn't exist.
1.26     2024-08-08   Removed unused LoggedOn variable from the loginMatrix()
                      function. That was generating an 'assignment to undeclared
                      variable' error, though it was not preventing login.
1.25     2024-07-06   Sixel support: Can now scale image files (png/jpg/gif) to
                      sixel format for the user's terminal width.
                      When emailing the sysop from the matrix menu, now prompts
                      the user for their email address (for replies). The user
                      will be logged in with the guest account (if enabled) in
                      order to save the email address that they enter.  If the
                      guest account is not enabled, then the login matrix will
                      not prompt for an email address when emailing the sysop.
1.24     2024-03-23   Fix for "ghosting" effect of menu highlight color on the
                      right menu border of 1st item & left border of 2nd item.
                      DDLoginMatrix now uses dd_lightbar_menu.js rather than
                      implementing its own lightbar menu.
1.23     2024-03-23   New setting: RandomOnlySixelThemesForSixelTerminal - If
                      enabled, then when choosing a random theme, only use
                      themes with sixels if the user's terminal supports sixels.
1.22     2024-02-27   The DEL key is now treated the same as backspace
1.21     2023-09-10   Allows the user to select a message editor before emailing
                      the sysop
1.20a    2023-04-02   Now uses supports_sixel() from cterm_lib.js instead of its
                      own function for that.
1.20     2023-03-14   Enabled input timeouts for the matrix login where possible
                      (to help prevent bots taking up nodes)
1.19a    2023-03-12   Fix for the .asc in the ntower theme to display properly
                      on wide terminals. Inclusion of the train-engine theme.
                      No change to the .js code.
1.19     2023-02-26   Added support for sixel images for the backgrounds to show
                      during login.
1.18     2022-12-16   Theme configuration colors no longer require the Ctrl-A
                      character; just a list of attribute characters. Also,
                      fixed the background screens for some of the login themes
                      that didn't display properly on terminals wider than 80
                      characters.
1.17     2022-12-02   Now checks the "Allow login by real name" setting (in the
                      node settigns) before trying to match the user by real
                      name
1.16     2022-12-01   Users can now log in with their real name if they want.
                      It's possible that two people will have the same real
                      name, and the first user with that name will be matched;
                      however, that might be rare.
1.15     2022-10-08   When retrieving a user's password for them, now the user
                      can enter an email address as well as their username.
                      Also, the password box now allows inptuting any length
                      of password and will only write mask characters to the
                      end of the password box.  Added a new optional theme
                      configuration option, PasswordBoxInnerWidth, which can be
                      used to specify the absolute inner width ofo the password
                      input box.
                      Also, the text of the USERNAME_NUM_PASS_PROMPT value in
                      the language file will now be truncated if it doesn't all
                      fit on the screen.
1.14     2022-05-13   Removed the PasswordLength configuration option and made
                      use of the minimum & maximum password lengths that are
                      known to JS as of Synchronet 3.17c (min_password_length
                      and max_password_length properties of the system object).
1.13     2022-01-31   Sends a normal attribute before disconnecting the user
1.12     2019-11-19   Updated to allow use with PETSCII terminals.  Note that
                      the login matrix doesn't detect the user's terminal
                      width, so use of 80-column login screens and menu
                      positioning after 40 columns would be wrapped on
                      40-column PETSCII terminals.
1.11     2019-01-01   Update for Synchronet 1.17: Updated to position the
                      cursor for the system password (for sysops).  Makes use
                      of the new parameters to the bbs.login() function.  The
                      login matrix is still compatible with previous versions
                      of Synchronet.
1.10     2016-12-19   Updated to reject attempted logins using a name in the
                      user name filter.
1.09     2013-05-27   Fix to make random theme selection work in Linux/UNIX
                      (used * instead of *.*, which works in both *nix and
                      Windows).
1.08     2011-02-11   Added support for playing a sound on the BBS machine when
                      a user logs in successfully.
1.07     2011-02-10   Removed the exit(); call at the end of the script so
                      that when included in other JavaScript scripts, the
                      other script can continue executing.
1.06     2009-12-02   Fixed (or at least improved) a bug where the input
                      would time out immediately under some situations.
                      Also, included an improved German (Deutsch) language
                      file.  Thanks goes to lodger (sysop of of Wintermute
                      BBS) for helping me with the German language file.
1.05     2009-08-22   Added an option to the matrix menu to allow the user
                      to retrieve their password.  Also added support for
                      different languages via the use of text files
                      containing text strings in differentlanguages.
1.04     2009-08-17   Removed K_ANSI_CPR from the username input flags.
                      K_ANSI_CPR isn't defined in some versions of
                      sbbsdefs.js, which could cause a problem.  I
                      don't think it's needed anyway.
                      Updated how the configuration files are read - it
                      now checks to make sure that the line read from the
                      configuration file is a string before working with
                      it.  This should avoid errors where it says
                      "fileLine has no properties".
1.03     2009-08-09   Bug fix: During the login, the user number
                      checking was not correct, causing it to reject
                      some valid users.  That has been fixed.
1.02     2009-08-08   - Enabled the use of right/left arrow keys to
                        move the cursor up & down in the menu.
                      - Updated the menu to allow scroll wrapping
                        (i.e., pressing up at the top item will go to
                        the bottom item).
                      - Allowed logging in by user number, rather
                        than just by username.
                      - Added the MaxLoginAttempts and AllowUserNumber
                        configuration options.
                      - Fixed a bug: If a theme was configured to not
                        display the menu border, the menu items would be
                        displayed in the wrong positions when the menu
                        was initially drawn.
1.01     2009-07-23   Commented out the VERSION variable to avoid
                      re-declaration problems in case the script is
                      included in other JavaScript files.  Fixed
                      some problems with the background files included
                      and included with some of the themes (blank lines
                      and screens more than 24 lines).  A few more
                      themes are included, too.
1.00     2009-07-08   First public release
