diff --git a/ctrl/slyedit_readme.txt b/ctrl/slyedit_readme.txt
deleted file mode 100644
index f786aa1aeae31924ccc5a4cf68e73e23b8ac7cc9..0000000000000000000000000000000000000000
--- a/ctrl/slyedit_readme.txt
+++ /dev/null
@@ -1,1079 +0,0 @@
-                         SlyEdit message editor
-                              Version 1.89d
-                        Release date: 2025-01-26
-
-                                  by
-
-                             Eric Oulashin
-                     Sysop of Digital Distortion BBS
-               BBS internet address: digitaldistortionbbs.com
-			         Alternate: digdist.synchro.net
-                     Email: eric.oulashin@gmail.com
-
-
-
-This file describes SlyEdit, a message editor for Synchronet.
-Note: For sysops who already have a previous version of SlyEdit
-installed and are upgrading to this version, please see the file
-Upgrading.txt.
-
-Contents
-========
- 1. Disclaimer
- 2. Introduction
- 3. Installation & Setup
- 4. Features
- 5. Configuration file
- 6. Ice-style Color Theme Settings
- 7. DCT-style Color Theme Settings
- 8. Common colors (appearing in both Ice and DCT color theme files)
- 9. Text replacements (AKA Macros)
-10. User settings
-11. Taglines
-12. Spell check and dictionaries
-13. Version history
-
-
-1. Disclaimer
-=============
-Although I have tested SlyEdit, I cannot guarantee that it is 100% bug free or
-will work as expected in all environments in all cases.  That said, I hope you
-find SlyEdit useful and enjoy using it.
-
-
-2. Introduction
-===============
-SlyEdit is a message editor that I wrote in JavaScript for Synchronet, which
-can mimic the look and feel of IceEdit or DCT Edit.  SlyEdit also supports
-customization of colors via theme files, cross-posting into other message
-areas, text search, and file import & export (works with files on the
-BBS machine, and is enabled only for the sysop).
-
-The motivation for creating this was that IceEdit and DCT Edit were always
-my two favorite BBS message editors, but in a world where 32-bit (and 64-bit)
-Windows and *nix platforms are common, 16-bit DOS emulation is required to run
-IceEdit and DCT Edit, which is noticeably slow and sometimes unreliable.
-Since SlyEdit is written in JavaScript, it is faster than a DOS-based message
-editor and can run in any environment in which Synchronet runs, without any
-modification or being re-compiled.
-
-SlyEdit will recognize the user's terminal size and set up the screen
-accordingly.  The width of the edit area will always be 80 characters and
-support up to 79 characters; however, an increased terminal size will provide
-more room for message information to be displayed.  Also, a terminal height
-greater than the standard 24 or 25 characters will provide a taller edit area,
-allowing more of the message to be seen on the screen at a time.
-
-SlyEdit allows the user to select/change the color of their text using the
-CTRL-K key, if the allowColorSelection is set to true in SlyEdit.cfg.  Also,
-you can have SlyEdit convert colors to ANSI when posting messages, for
-compatibility with other BBS software.  To do so, set the saveColorsAsANSI
-setting to true in SlyEdit.cfg.
-
-As of version 1.88b (2024-02-11), SlyEdit supports inputting UTF-8 text.
-
-Also, SlyEdit has no moving parts that can wear out over time.
-
-Thanks go out to the following people for testing:
-- Nick of Lightning BBS (lightningbbs.dyndns.org) for testing early versions
-- Nick (AKA Access Denied) of The Pharcyde (pharcyde.org) for testing the
-  newer versions and for his input on various features, mainly message quoting
-- echicken (sysop of Electronic Chicken) for his solution to look up the
-  original author of a message after a user changes the "To" name when
-  replying to a message
-
-3. Installation & Setup
-=======================
-These are the steps for installation:
- 1. Extract the archive.  If you're viewing this file, then you've probably
-    already done this. :)
- 2. There are 2 ways SlyEdit's files can be copied onto your Synchronet system:
-    1. Copy the JavaScript files into your sbbs/exec directory and the .cfg files
-       into your sbbs/ctrl directory.  If you plan to customize your SlyEdit.cfg
-       or color theme files, it's recommended to also put the .cfg files in your
-       sbbs/mods directory so that your configuration won't be accidentally
-       overwritten when updating the files from the Synchronet CVS repository.
-       SlyEdit will first check the sbbs/mods directory for the configuration
-       files, then sbbs/ctrl, and then SlyEdit's own directory for the
-       configuration files.  In other words, the SlyEdit configuration files
-       in sbbs/mods take first precedence, sbbs/ctrl 2nd precedence, and
-       SlyEdit's own directory takes last precedence for the configuration
-       files.
-    2. Copy all files together into their own directory of your choice
- 3. Set up SlyEdit on your BBS with Synchronet's configration program (SCFG).
-
-SlyEdit can be set to mimic IceEdit or DCT Edit via a command-line parameter.
-The values for this parameter are as follows:
-  ICE: Mimic the IceEdit look & feel
-  DCT: Mimic the DCT Edit look & feel
-  RANDOM: Randomly select either the IceEdit or DCT Edit look & feel
-
-To add SlyEdit to Synchronet's list of external editors, run Synchronet's
-configuration program (SCFG) and select "External Programs", and then
-"External Editors".  The following describes setting up SlyEdit using the
-ICE parameter for IceEdit emulation:
- 1. Scroll down to the empty slot in the editor list and press Enter to
-    select it.
- 2. For the external editor name, enter "SlyEdit (Ice style)" (without the quotes)
-    (or similar, depending on your personal preference)
- 3. For the internal code, use SLYEDICE (or whatever you want, depending on your
-    personal preference)
- 4. Press Enter to select and edit the new entry.  Asuming that the .js files
-    are in the sbbs/exect directory, the settings should be as follows (the
-    wording and options shown may vary, depending on the version of Synchronet
-    you have installed):
-      Command line: ?SlyEdit.js %f ICE
-      Access requirement string: ANSI
-      Intercept standard I/O: No
-      Native (32-bit) Executable: No
-      Use Shell to Execute: No
-      Record Terminal Width: Yes
-      Word-wrap Quoted Text: Your decision - Wrap to specific width, 80, or no
-      Automatically Quoted Text: All
-      Editor Information Files: QuickBBS MSGINF/MSGTMP
-      Expand Line Feeds to CRLF: Yes
-      Strip FidoNet Kludge Lines: No
-      BBS Drop File Type: None
-    After you've added SlyEdit, your Synchronet configuration window should look
-    like this:
-    +[�][?]--------------------------------------------------------------+
-    �                      SlyEdit (Ice style) Editor                    �
-    �--------------------------------------------------------------------�
-    � �Name                            SlyEdit  (Ice style)              �
-    � �Internal Code                   SLYEDICE                          �
-    � �Remote Command Line             ?SlyEdit.js %f ICE                �
-    � �Access Requirements             ANSI                              �
-    � �Intercept Standard I/O          No                                �
-    � �Native (32-bit) Executable      No                                �
-    � �Use Shell to Execute            No                                �
-    � �Record Terminal Width           Yes                               �
-    � �Word-wrap Quoted Text           Yes, for terminal width           �
-    � �Automatically Quoted Text       All                               �
-    � �Editor Information Files        QuickBBS MSGINF/MSGTMP            �
-    � �Expand Line Feeds to CRLF       Yes                               �
-    � �Strip FidoNet Kludge Lines      No                                �
-    � �BBS Drop File Type              None                              �
-    +--------------------------------------------------------------------+
-
-    For DCT Edit mode, use DCT in place of ICE on the command line.  For
-    random mode, use RANDOM in place of ICE.
-
-    Note that if you placed the files in a different directory, then the
-    command line should include the full path to SlyEdit.js.  For example,
-    if SlyEdit was placed in sbbs/xtrn/SlyEdit, then the command line would
-    be /BBS/sbbs/xtrn/DigDist/SlyEdit/SlyEdit.js %f ICE
-
-
-4. Features
-===========
-As mentioned earlier, SlyEdit is can mimic the look & feel of IceEdit or
-DCT Edit.  It also has the following features:
-- Message quoting: When replying to a message, users can select lines from the
-  message to quote.  By default, SlyEdit puts the initials of the original
-  author in front of the quote lines to indicate who originally wrote those
-  parts of the message.  Optionally, sysops may disable the use of initials
-  in quote lines, in which case SlyEdit simply prefixes quote lines with " > "
-  as was done in IceEdit, DCT Edit, and other editors of the early-mid 1990s.
-- Cross-posting into other message sub-boards: When posting a message to a
-  message sub-board, SlyEdit allows the user to select other message sub-boards
-  to post the message into.  SlyEdit will post the message to the user's
-  current message sub-board by default.  Using the cross-post feature, the
-  user can select any number of other message sub-boards to cross-post his/her
-  message into.  SlyEdit respects the ARS security setting for each sub-board -
-  If a user is not allowed to post in a message sub-board, SlyEdit will not
-  allow the user to select that sub-board for cross-posting.  The user can also
-  un-select their current message sub-board.  When the user un-selects their
-  current message sub-board and chooses other message sub-boards to post
-  his/her message into, Synchronet will say that the message was aborted
-  because the message file wasn't saved as it normally is for the current
-  message sub-board.  However, SlyEdit will output all of the message
-  sub-boards that the message was posted into.  If the user un-selected their
-  current message sub-board, SlyEdit will also output a note explaining that
-  the BBS will say the message was aborted, even though it was posted into
-  other sub-boards and that is normal.
-- Text search: Allows the user to search for text in the message.  If
-  the text is found, the message area will scroll to it, and it will be
-  highlighted.  Repeated searches for the same text will look for the
-  next occurrance of that text.
-- Allows changing the message subject
-  Note: If using a Synchronet 3.17c development build (pre official release),
-  you will need a build from July 21, 2019 or newer.
-- Navigation: Page up/down, home/end of line, and arrow keys
-- Slash commands (at the start of the line):
-  /A: Abort
-  /S: Save
-  /Q: Quote message
-  /C: Cross-post message sub-board selection
-- Sysops can import a file (stored on the BBS machine) into the message
-- Sysops can export the current message to a file (on the BBS machine)
-- Configuration file with behavior and color settings.  See section 4
-  (Configuration File) for more information.
-- Spell check
-
-The following is a summary of the keyboard shortcuts, from SlyEdit's command
-help screen (note that file import, with Ctrl-O & Ctrl-X, are only available to
-the sysop or users with sysop access, and file import/export takes place on the
-BBS machine):
-
-Help keys                                     Slash commands (on blank line)
----------                                     ------------------------------
-Ctrl-G       : Input graphic character      � /A      : Abort
-Ctrl-L       : Command key list (this list) � /S      : Save
-                                            � /Q      : Quote message
-Ctrl-T       : List text replacements       � /T      : List text replacements
-                                            � /U      : Your user settings
-                                            � /C      : Cross-post selection
-                                            � /UPLOAD : Upload a message
-
-Command/edit keys
------------------
-Ctrl-A       : Abort message                � PageUp  : Page up
-Ctrl-Z       : Save message                 � PageDown: Page down
-Ctrl-Q       : Quote message                � Ctrl-W  : Word/text search
-Insert/Ctrl-I: Toggle insert/overwrite mode � Ctrl-D  : Delete line
-Ctrl-S       : Change subject               � ESC     : Command menu
-Ctrl-U       : Your user settings           � Ctrl-C  : Cross-post selection
-Ctrl-K       : Change text color            � Ctrl-R  : Spell checker
-Ctrl-O       : Import a file                � Ctrl-X  : Export to file
-
-
-5. Configuration file
-=====================
-The configuration file, SlyEdit.cfg, is split up into 3 sections -
-Behavior, Ice colors, and DCT colors.  These sections are designated
-by [BEHAVIOR], [ICE_COLORS], and [DCT_COLORS], respectively.
-
-To help with configuration, there is a menu-driven configuration script in
-sbbs/exec called slyedcfg.js. To run it, open a command prompt in the sbbs/exec
-directory and run it with this command:
-jsexec slyedcfg
-
-Alternately, you can specify the .js filename extension if you want to:
-jsexec slyedcfg.js
-
-The configuration script will copy your SlyEdit configuration file to your
-sbbs/mods directory to help prevent it from being accidentally overridden when
-doing an update from the Synchronet source repository. SlyEdit will pick up its
-configuration from sbbs/mods if the configuration file is there.
-
-The configuration settings are described below:
-
-Behavior settings
------------------
-Setting                           Description
--------                           -----------
-displayEndInfoScreen              Whether or not to display the info
-                                  screen when SlyEdit exits.  Valid values
-                                  are true and false.  If this option is
-                                  not specified, this feature will be
-                                  enabled by default.
-
-userInputTimeout                  Whether or not to use an input timeout
-                                  for users.  Valid values are true and
-                                  false.  Note: The input timeout is not
-                                  used for sysops.  If this option is not
-                                  specified, this feature will be enabled
-                                  by default.
-
-reWrapQuoteLines                  Whether or not to re-wrap quote lines. Valid
-                                  values are true and false.  This feature is
-                                  enabled by default.  With this feature
-                                  enabled, SlyEdit will re-wrap quote lines
-                                  to still be complete and readable after the
-                                  quote prefix character is added to the front
-                                  of the quote lines.  SlyEdit is able to
-                                  recognize quote lines beginning with >
-                                  or 2 letters and a > (such as EO>).  If this
-                                  feature is disabled, quote lines will simply
-                                  be trimmed to make room for the quote prefix
-                                  character to be added to the front.
-
-allowColorSelection               Whether or not to let the user change the
-                                  color/attributes of the text they're typing.
-                                  Defaults to true.  When this is enabled, the
-                                  user can change their text color with the
-                                  CTRL-K hotkey.
-
-saveColorsAsANSI                  Whether or not to save message color/attribute
-                                  codes as ANSI (if not, they will be saved as
-                                  Synchronet attribute codes). Saving colors as
-                                  ANSI in posted messages provides a
-                                  compatibility with other BBS software and
-                                  message readers that might not understand
-                                  Synchronet attribute codes (but most do
-                                  understand ANSI).
-
-allowCrossPosting                 Whether or not to allow cross-posting
-                                  messages into different/multiple message
-                                  sub-boards.  Valid values are true and false.
-
-enableTextReplacements            Toggles the use of text replacements (AKA
-                                  macros) as the user types a message.  Valid
-                                  values are true, false, and regex.  If regex
-                                  is used, text replacements will be enabled
-                                  and used as regular expressions as
-                                  implemented by JavaScript.  For more
-                                  information, see section 10 (Text
-                                  replacements (AKA Macros)).
-
-tagLineFilename                   Specifies the name of the file that stores
-                                  taglines, which users can optionally choose
-                                  from to be appended to their message upon
-                                  saving the message.
-
-taglinePrefix                     Some text to be added to the front of
-                                  a tagline that is selected from the user.
-                                  The intention of this setting is to
-                                  differentiate taglines from the rest of the
-                                  message.  This defaults to the string "... "
-                                  (3 dots and a space).  If desired, this can
-                                  be set to a blank string (nothing after the
-                                  =) - for instance, if you only want to put
-                                  double quotes around text lines, you could
-                                  set this to blank and enable the
-                                  quoteTagLines setting.
-
-quoteTaglines                     Whether or not to put selected taglines in
-                                  double quotes.  This defaults to false.  If
-                                  you like taglines to have double quotes and
-                                  no prefix, you can set this to true and set
-                                  taglinePrefix to a blank string (nothing
-                                  after the =).
-
-shuffleTaglines                   Whether or not to shuffle (randomize) the
-                                  list of taglines displayed to the user for
-                                  selection.
-
-allowUserSettings                 Whether or not to allow users to configure
-                                  their own user settings.  This defaults to
-                                  true.
-
-allowEditQuoteLines               Whether or not to allow the user to edit
-                                  quote lines.  Valid values are true and
-                                  false.  If this option is not specified, the
-                                  default value is true.
-
-allowSpellCheck                   Whether or not to allow spell check.  Valid
-                                  values are true and false.  Defaults to true.
-                                  You might want to disable spell check if,
-                                  for instance, the spell check feature causes
-                                  an "out of memory" error on your system.
-
-useQuoteLineInitials              Whether or not to prefix quoted message lines
-                                  with the previous author's initials when
-                                  replying to a message.  Valued values are
-                                  true and false.  If this setting is disabled,
-                                  SlyEdit will simply prefix the quoted lines
-                                  with " > ", as was done in IceEdit, DCT Edit,
-                                  and other message editors of the early-mid
-                                  1990s.  This setting is enabled by default.
-                                  This setting serves as the default for the
-                                  user setting, which users can configure in
-                                  their own settings.
-
-indentQuoteLinesWithInitials      When prefixing quoted messages lines with the
-                                  previous author's initials, this setting
-                                  specifies whether or not to indent quoted
-                                  lines with a space.  Valued values are true
-                                  and false.  This setting is disabled by
-                                  default.  This setting serves as the default
-                                  for the user setting, which users can
-                                  configure in their own settings.
-
-enableTagLines                    Whether or not to enable the option for users
-                                  to choose a tagline to append to their
-                                  message upon saving the message.  This
-                                  setting serves as the default for the user
-                                  setting, which users can configure in their
-                                  own settings.
-
-dictionaryFilenames               Dictionary filenames (used for spell check).
-                                  This is a comma-separated list of dictionary
-                                  filenames.  The dictionary filenames are in
-                                  the format dictionary_<language>.txt, where
-                                  <language> is the language name.  In this
-                                  list, the filenames can be in that format, or
-                                  just <language>.txt, or just <language>.
-                                  Leave blank to use all dictionary files that
-                                  exist on the system.  The dictionary files
-                                  are located in either sbbs/mods, sbbs/ctrl,
-                                  or the same directory as SlyEdit.
-
-Ice colors
-----------
-Setting                           Description
--------                           -----------
-ThemeFilename                     The name of the color theme file to use.
-                                  Note: Ice-style theme settings are described
-                                  in Section 5: Ice-style Color Theme Settings.
-                                  If no theme file is specified, then default
-                                  colors will be used.
-menuOptClassicColors              Whether or not to use the classic Ice-style
-                                  menu option colors.  Valid options are true
-                                  and false.  If this option is set to false,
-                                  then new colors will be used for Ice-style
-                                  menu options.  If this is set to true, then
-                                  the classic Ice-style menu option colors will
-                                  be used.  Note that if this is set to false,
-                                  the color setting SelectedOptionTextColor
-                                  won't be used.
-
-DCT colors
-----------
-Setting                           Description
--------                           -----------
-ThemeFilename                     The name of the color theme file to use.
-                                  Note: DCT-style theme settings are described
-                                  in Section 8: DCT-style Color Theme Settings.
-                                  If no theme file is specified, then default
-                                  colors will be used.
-
-The color theme files are plain text files that can be edited with a text
-editor.  For each color setting, you can specify color attribute characters as
-specified in the Synchronet documentation for attribute (Ctrl-A) codes:
-http://wiki.synchro.net/custom:ctrl-a_codes
-Note that you don't need control (Ctrl-A) characters for the color settings;
-just the attribute characters.  A couple examples of specifying colors:
-
-High green: gh
-Normal cyan: c
-
-
-6. Ice-style Color Theme Settings
-=================================
-Note that you don't need control (Ctrl-A) characters for the color settings;
-just the attribute characters.
-
-The following options are valid for Ice-style theme files:
-----------------------------------------------------------
-QuoteLineColor                    The color for quoted lines in the message
-
-BorderColor1                      The first color to use for borders
-                                  (for alternating border colors)
-
-BorderColor2                      The other color to use for borders
-                                  (for alternating border colors)
-
-KeyInfoLabelColor                 The color to use for key information
-                                  labels (displayed on the bottom border)
-
-TopInfoBkgColor                   The color to use for the background in
-                                  the informational area at the top
-
-TopLabelColor                     The color to use for informational labels
-                                  in the informational area at the top
-
-TopLabelColonColor                The color to use for the colons (:) in the
-                                  informational area at the top
-
-TopToColor                        The color to use for the "To" name in the
-                                  informational area at the top
-
-TopFromColor                      The color to use for the "From" name in the
-                                  informational area at the top
-
-TopSubjectColor                   The color to use for the subject in the
-                                  informational area at the top
-
-TopTimeColor                      The color to use for the time left in the
-                                  informational area at the top
-
-TopTimeLeftColor                  The color to use for the time left in the
-                                  informational area at the top
-
-EditMode                          The color to use for the edit mode text
-
-QuoteWinText                      The color for non-highlighted text in
-                                  the quote window
-
-QuoteLineHighlightColor           The color for highlighted text in the
-                                  quote window
-
-QuoteWinBorderTextColor           The color for the quote window borders
-
-; Colors for the multi-choice options
-SelectedOptionBorderColor         The color to use for the borders around
-                                  text for selected multi-choice options
-
-SelectedOptionTextColor           The color to use for the text for selected
-                                  multi-choice options
-
-UnselectedOptionBorderColor       The color to use for the borders around
-                                  text for unselected multi-choice options
-
-UnselectedOptionTextColor         The color to use for the text for unselected
-                                  multi-choice options
-
-7. DCT-style Color Theme Settings
-=================================
-Note that you don't need control (Ctrl-A) characters for the color settings;
-just the attribute characters.
-
-The following options are valid for DCT-style theme files:
-----------------------------------------------------------
-QuoteLineColor                    The color for quoted lines in the message
-
-TopBorderColor1                   The first color to use for the
-                                  top borders (for alternating border
-                                  colors)
-
-TopBorderColor2                   The other color to use for the
-                                  top borders (for alternating border
-                                  colors)
-
-EditAreaBorderColor1              The first color to use for the
-                                  edit area borders (for alternating border
-                                  colors)
-
-EditAreaBorderColor2              The other color to use for the
-                                  edit area borders (for alternating border
-                                  colors)
-
-EditModeBrackets                  The color to use for the square brackets
-                                  around the edit mode text that appears
-                                  in the bottom border (the [ and ] around
-                                  the "INS"/"OVR")
-
-EditMode                          The color to use for the edit mode text
-
-TopLabelColor                     The color to use for the informational labels
-                                  in the informational area at the top
-
-TopLabelColonColor                The color to use for the colons (:) in the
-                                  informational area at the top
-
-TopFromColor                      The color to use for the "From" name in the
-                                  informational area at the top
-
-TopFromFillColor                  The color to use for the filler dots in the
-                                  "From" name in the informational area at the top
-
-TopToColor                        The color to use for the "To" name in the
-                                  informational area at the top
-
-TopToFillColor                    The color to use for the filler dots in the
-                                  "To" name in the informational area at the top
-
-TopSubjColor                      The color to use for the subject in the informational
-                                  area at the top
-
-TopSubjFillColor                  The color to use for the filler dots in the subject
-                                  in the informational area at the top
-
-TopAreaColor                      The color to use for the "Area" text in the
-                                  informational area at the top
-
-TopAreaFillColor                  The color to use for the filler dots in the "Area"
-                                  field in the informational area at the top
-
-TopTimeColor                      The color to use for the "Time" text in the
-                                  informational area at the top
-
-TopTimeFillColor                  The color to use for the filler dots in the "Time"
-                                  field in the informational area at the top
-
-TopTimeLeftColor                  The color to use for the "Time left" text in the
-                                  informational area at the top
-
-TopTimeLeftFillColor              The color to use for the filler dots in the "Time left"
-                                  field in the informational area at the top
-
-TopInfoBracketColor               The color to use for the square brackets in the
-                                  informational area at the top
-
-QuoteWinText                      The color for non-highlighted text in
-                                  the quote window
-
-QuoteLineHighlightColor           The color for highlighted text in the
-                                  quote window
-
-QuoteWinBorderTextColor           The color to use for the text in the quote window
-                                  borders
-
-QuoteWinBorderColor               The color to use for the quote window borders
-
-BottomHelpBrackets                The color to use for the brackets displayed in
-                                  the line of help text at the bottom
-
-BottomHelpKeys                    The color to use for the key names written in
-                                  the line of help text at the botom
-
-BottomHelpFill                    The color to use for the filler dots in the line of
-                                  help text at the bottom
-
-BottomHelpKeyDesc                 The color to use for the key descriptions in the
-                                  line of help text at the bottom
-
-TextBoxBorder                     The color to use for text box borders (i.e., the
-                                  abort confirmation prompt)
-
-TextBoxBorderText                 The color to use for text in the borders of text
-                                  boxes (i.e., the abort confirmation prompt)
-
-TextBoxInnerText                  The color to use for text inside text boxes
-
-YesNoBoxBrackets                  The color to use for the square brackets used for
-                                  yes/no confirmation prompt boxes
-
-YesNoBoxYesNoText                 The color to use for the actual "Yes"/"No" text in
-                                  yes/no confirmation prompt boxes
-
-SelectedMenuLabelBorders          The color to use for the border characters for the
-                                  labels of currently active drop-down menus
-
-SelectedMenuLabelText             The color to use for the text for the labels of
-                                  currently active drop-down menus
-
-UnselectedMenuLabelText           The color to use for the text for the labels of
-                                  inactive drop-down menus
-
-MenuBorders                       The color to use for the drop-down menu borders
-
-MenuSelectedItems                 The color to use for selected items on the drop-down
-                                  menus
-
-MenuUnselectedItems               The color to use for unselected items on the
-                                  drop-down menus
-
-MenuHotkeys                       The color to use for the hotkey characters in the
-                                  menu items on the drop-down menus
-
-8. Common colors (appearing in both Ice and DCT color theme files)
-==================================================================
-Note that you don't need control (Ctrl-A) characters for the color settings;
-just the attribute characters.
-
-listBoxBorder                     The color to use for the border of list
-                                  boxes, such as the cross-post area selection
-                                  box and the text replacements list box.  Note
-                                  that this setting replaces crossPostBorder,
-                                  which was used in previous versions of
-                                  SlyEdit.
-
-listBoxBorderText                 The color to use for text in the borders of
-                                  list boxes, such as the cross-post area
-                                  selection box and the text replacements list
-                                  box.  Note that this setting replaces
-                                  crossPostBorderText, which was used in
-                                  previous versions of SlyEdit.
-
-crossPostMsgAreaNum               The color to use for the message group/sub-
-                                  board numbers in the cross-post area
-                                  selection box
-
-crossPostMsgAreaNumHighlight      The color to use for the highlighted
-                                  (lightbar) message group/sub-board numbers
-                                  in the cross-post area selection box
-
-crossPostMsgAreaDesc              The color to use for the message group/
-                                  sub-board descriptions in the cross-post
-                                  area selection box
-
-crossPostMsgAreaDescHighlight     The color to use for the highlighted
-                                  (lightbar) message group/sub-board
-                                  descriptions in the cross-post area selection
-                                  box
-
-crossPostChk                      The color to use for the checkmarks for the
-                                  enabled message sub-boards in the cross-post
-                                  area selection box
-
-crossPostChkHighlight             The color to use for the highlighted
-                                  (lightbar) checkmarks for the enabled
-                                  message sub-boards in the cross-post area
-                                  selection box
-
-crossPostMsgGrpMark               The color to use for the current message
-                                  group marker character in the cross-post area
-                                  selection box
-
-crossPostMsgGrpMarkHighlight      The color to use for the highlighted
-                                  (lightbar) current message group marker
-                                  character in the cross-post area selection
-                                  box
-
-msgWillBePostedHdr                The color to use for the text "Your message
-                                  will be posted into the following area(s)"
-                                  text when exiting SlyEdit
-
-msgPostedGrpHdr                   The color to use for the group name header
-                                  when listing the message's posted message
-                                  areas when exiting SlyEdit
-
-msgPostedSubBoardName             The color to use for the message sub-boards
-                                  when listing the message's posted message
-                                  areas when exiting SlyEdit
-
-msgPostedOriginalAreaText         The color to use for the text "(original
-                                  message area)" when listing the message's
-                                  posted message areas when exiting SlyEdit
-
-msgHasBeenSavedText               The color to use for the text "The message
-                                  has been saved." when exiting SlyEdit
-
-msgAbortedText                    The color to use for the Message Aborted
-                                  text when exiting SlyEdit
-
-emptyMsgNotSentText               The color to use for the Message Not Sent
-                                  text when exiting SlyEdit
-
-genMsgErrorText                   The color to use for general message error
-                                  text when exiting SlyEdit
-
-listBoxItemText                   The color to use for text appearing in list
-                                  boxes (such as the list of text replacements
-                                  and the list of tag lines)
-
-listBoxItemHighlight              The color to use for the currently selected
-                                  item in list boxes (such as the list of text
-                                  replacements and the list of tag lines)
-
-9. Text replacements (AKA Macros)
-==================================
-SlyEdit version 1.29 added text replacements (AKA Macros), which lets you (the
-sysop) define words to be replaced with other text as the user types a message.
-This feature can be used, for instance, to replace commonly misspelled words
-with their correct versions or to replace swear words with less offensive
-words.  This feature is toggled by the enableTextReplacements option in
-SlyEdit.cfg can can have one of three values:
-false : Text replacement is disabled
-true  : Text replacement is enabled and performed as literal search and replace
-regex : Text replacement is enabled using regular expressions as implemented by
-        JavaScript (more accurately, Synchronet's JavaScript interpreter, which
-        at the time of this writing is Mozilla's JavaScript engine (AKA
-        JavaScript-C or "SpiderMonkey").
-
-The text searches are performed on single words only, as the user types the
-message, and are replaced by whatever text you configure for the word.  The
-configuration for text replacing is read from a configuration file called
-SlyEdit_TextReplacements.cfg, which is plain text and can be placed in either
-sbbs/ctrl or in the same directory as SlyEdit's .js files (SlyEdit.js,
-SlyEdit_Misc.js, etc.).  Each line in SlyEdit_TextReplacements.cfg needs to
-have the following format:
-originalWord=replacementText
-where originalWord is the word to be replaced, and replacementText is the text
-to replace the word with.
-
-The options for the enableTextReplacements configuration optoin are explained
-in more detail below:
-
-- false: Text replacing is disabled
-
-- true: Literal text search and replace - The words will be matched literally
-and replaced with the text on the right side of the = in
-SlyEdit_TextReplacements.cfg.  In this mode, word matching is not
-case-sensitive.  The words can have both uppercase and lowercase letters and
-will still be matched to the words configured in SlyEdit_TextReplacements.cfg.
-In this mode, if the first letter of the original word is uppercase, then the
-first letter of the replaced text will also be uppercase.
-While this works, one drawback to literal text searching is that it won't
-replace a word if there are punctuation characters or other characters around
-the word or if the word is misspelled.
-
-- regex: With this option, SlyEdit will treat the word searches (on the left
-side of the = in SlyEdit_TextReplacements.cfg) as regular expressions, as
-implemented by JavaScript.  When using regular expressions, SlyEdit will start
-trying all the regular expressions provided and apply only the first one that
-changes the text and will stop there.
-Regular expressions offer a more flexible way to serach and replace text.  For
-example, in case a word is surrounded by punctuation or other characters, a
-regular expression can be given that will still match the word.  For example,
-you might want a regular expression that changes "teh" to "the" (since "teh"
-is a common misspelling of "the").  To ensure that the word is replaced even if
-the word has other characters around it, you could use a regular exprssion and
-replacement such as this:
-(.*)teh(.*)=$1the$2
-That way, even if the word is enclosed in quotes (such as "teh"), the word will
-still be converted to "the".  And to preserve the first letter's case (if it's
-uppercase or lowercase), this regular expression and replacement string would
-handle that:
-(.*)([tT])eh(.*)=$1$2he$3
-SlyEdit applies the regular expressions on a per-word basis; that is, the
-expression .* in a regular expression will match any characters only in the
-last word the user typed, not the entire line.
-
-For more information on regular expressions, the
-following are some web pages that explain them:
-
-General information about regular expressions:
-http://www.regular-expressions.info/tutorial.html
-
-Information on text grouping and backreferencing with parenthesis (the page
-calls them "round brackets") - A very powerful feature of regular expressions:
-http://www.regular-expressions.info/brackets.html
-
-General information about regular expressions geared toward JavaScript:
-http://www.javascriptkit.com/javatutors/re.shtml
-
-Information about using backreferences with regular expressions in JavaScript:
-http://stackoverflow.com/questions/2447915/javascript-string-regex-backreferences
-
-JavaScript-specific information on regular exprssions:
-http://www.w3schools.com/js/js_obj_regexp.asp
-http://www.w3schools.com/jsref/jsref_obj_regexp.asp
-
-One nice thing about JavaScript's implementation (among others) of regular
-expressions is that it supports the use of parentheses for character grouping
-and backreferencing to place a portion of the matched text in the replacement
-text.  In JavaScript, each numbered capture buffer is preceded by a dollar sign
-($).  For example, the regular expression (darn) will match the word "darn" and
-store it in buffer 1, and in JavaScript (and with SlyEdit's search and
-replace), you would use $1 to refer to the word "darn".  For example, for
-(darn), the replacement $1it would replace the word "darn" with "darnit".
-
-10. User settings
-=================
-Since version 1.32, SlyEdit has the ability for each user to configure some
-settings for themselves.  The user settings include the following:
-- Whether or not to enable the option to use taglines
-- Whether or not to prompt for spell checking when saving a message
-- Whether or not to add the original author's initials to quote lines
-  (this was previously only configurable in SlyEdit.cfg)
-- Whether or not to indent quote lines that use author's intials (this was
-  previously only configurable in SlyEdit.cfg)
-- Whether or not to trim spaces from quoted lines (when replying to messages).
-  Some users indent their paragraphs with spaces as a writing style.  When
-  this setting is enabled, this feature removes leading spaces from quoted
-  lines when replying to a message.  A user might want to disable this, for
-  example, when they want to ensure that a message is quoted exactly as-is.
-- Whether or not to auto-sign messages.  When this setting is enabled, the
-  user's messages are automatically signed with their alias or their real
-  name, depending on the sub-board's settings.  There is additionally a setting
-  to specify whehter to use only their first name when signing with their
-  real name, and also whether to sign emails with their real name (emails
-  don't have a configuration like sub-boards do).
-- Dictionaries for spell-check.  If there is only one dictionary configured,
-  this option won't appear on the user options list.  If there are multiple
-  dictionary files on the BBS machine (in either sbbs/mods, sbbs/ctrl, or in
-  the same directory as SlyEdit), the user will be able to choose any or all
-  dictionaries to be used for the spell check feature.  Multiple dictionaries
-  can be selected, so if the user writes messages in more than one language,
-  or if a message could contain multiple languages, the spell-check feature
-  will use all selected dictionaries for spell checking.
-
-The user settings files will be stored in the sbbs/data/user directory with the
-filename <user number>.SlyEdit_Settings, and the user number will be 0-padded
-up to 4 digits.
-
-11. Taglines
-============
-SlyEdit version 1.32 added the ability for users to optionally choose a tagline
-to be appended to their message upon saving the message.  Each user can
-configure in their user settings whether or not they want to enable this
-feature.  The setting enableTaglines in SlyEdit.cfg sets the default setting,
-but users are free to change it for themselves.
-
-The taglines are loaded from the text file SlyEdit_Taglines.txt, which can be
-located in any of the following directories, searched in the following order:
-- sbbs/mods
-- sbbs/ctrl
-- The same directory as SlyEdit's .js files
-
-Synchronet version 3.16 has the ability to place the tag line after the user's
-signature, so if you are running version 3.16 or newer of Synchronet, the tag
-line will be placed after the user's signature, if the user has a signature.
-
-Specifically, Synchronet 3.16 starting with the beta build on July 5, 2015 will
-behave that way; with earlier versions of Synchronet, the tag line will be
-placed before the user's signature.  On June 22, 2015, Synchronet added support
-for a file called editor.tag (in each node directory's temp directory) which
-can contain an editor tagline, and on July 5, 2015, Synchronet included an
-update in which the full path & filename to the tagline file will be written
-to line 7 of the MSGINF drop file, which SlyEdit reads on startup.  If the
-MSGINF file includes the 7th line, then the tagline will appear after the
-user's signature (if they have one).  If the MSGINF file does not include the
-7th line, then the tagline will appear before the user's signature.
-
-
-12. Spell check and dictionaries
-================================
-Since version 1.64, SlyEdit has a spell check feature.  Spell check can be
-started by the user with the Ctrl-R hotkey, or by the Edit > Spell Checker
-option in the DCT-style ESC menu (only available when in DCT mode).  For spell
-check, SlyEdit will check each word to see if it exists in the configured
-dictionary/dictionaries, and if not, it will prompt the user for a corrected
-version of the word.  The sysop can configure one or multiple dictionaries in
-SlyEdit.cfg with the dictionaryFilenames option.  Dictionary files need to be
-in the format dictionary_<languageName>.txt, where <languageName> is the name
-of the language.  Also, ideally, the language names should follow standard
-language tags, as in "en-us" for English (US), etc.  See these web pages for
-more information:
-https://en.wikipedia.org/wiki/Language_localisation
-http://www.lingoes.net/en/translator/langcode.htm
-Also, the dictionary filenames will be parsed and the language name will be
-used in the menu of dictionaries in the user options - The user is able to
-enable/disable the configured dictionaries for their own use for the spell
-checker.
-
-For the dictionaryFilenames option in SlyEdit.cfg, you can specify a comma-
-separated list of dictionary filenames.  The dictionary filenames are in the
-format dictionary_<languageName>.txt, where <language> is the language name.
-In this list, the filenames can be in that format, or just <languageName>.txt,
-or just <languageName>.  You can leave the setting blank to use all dictionary
-files that exist on the system.
-
-SlyEdit will search for the dictionary files in the following directories, in
-this order:
-1. sbbs/mods
-2. sbbs/ctrl
-3. SlyEdit's own directory
-
-Dictionary files must be sorted in order for word matching to work properly
-(SlyEdit uses a binary search for quick word matching, which requires the words
-to be sorted).  Also, all of the words in the dictionary files must be lower-
-case, since SlyEdit does case-insensitive matching by converting words in the
-message to lower-case and comparing them with the words in the dictionary.
-
-
-13. Version history
-===================
-Version  Date         Description
--------  ----         -----------
-1.89b    2024-05-11   In SlyEdit_Misc.js, check to see that
-                      xtrn_area.editor[user.editor] is an object before using it.
-1.89a    2024-05-04   Don't line-wrap poll messages for quoting, as that could
-                      mess up the formatting of the poll options.  Also, a minor
-                      fix for the 'to' name length in DCT mode when using a wide
-                      terminal.
-1.89     2024-04-30   Quote wrapping length: When re-wrapping quote lines, read
-                      the editor configuration settings for "word-wrap quoted
-                      text" as specified in xtrn.ini (settable in scfg) - Wrap
-                      quote lines to the width specified there, or if not
-                      specified, default to 79 columns. This is to help ensure
-                      quoted text is a reasonable width for many terminals. The
-                      wrapping logic is also called for prepending quoted text
-                      with the quote prefix, so (for now) there needs to be a
-                      default quote wrap width.
-1.88d    2024-02-16   Header display update for UTF-8. And printing from/to/subj
-                      after writing the header with empty data so that the
-                      header 'graphic' characters & everything lines up
-                      properly.
-1.88c    2024-02-12   UTF-8 support in the displayed header and when quoting
-                      text and when quoting message text
-1.88b    2024-02-11   Previous change reverted; now has "real" UTF-8 support.
-                      New feature: Entering a graphic char with Ctrl-G (Ctrl-G
-                      was previously the key for general help, which wasn't much)
-1.88     2024-02-07   Support for entering UTF-8/Unicode characters; internally
-                      uses K_CP437 to convert to CP437, so the strings are still
-                      in CP437 internally in Synchronet
-1.87a    2023-12-17   Using the msg_area.sub object to check sub-board settings
-                      instead of opening the sub-board (for determining whether
-                      to post with real name)
-1.87     2023-08-15   Improvement to paragraph/line breaks in quote line wrapping
-1.86     2023-07-26   Started refactoring the re-wrapping of quote lines to work
-                      better for the various quote prefixes used in various
-                      messages.
-1.85     2023-05-15   Internal: Refactored readColorConfig() in _DCTStuff.js
-                      and _IceStuff.js.
-                      Removed the readValueSettingConfigFile() function.
-1.84     2023-02-10   Sysops: When importing a file from the BBS machine,
-                      SlyEdit now prompts to send it immediately or not (if not,
-                      edit it before sending).  Sending immediately can be
-                      useful for posting ANSI files unmodified.
-1.83     2022-12-13   Quote lines that are wider than the user's terminal width
-                      are now wrapped to the user's terminal width to ensure
-					  all the quote lines are entirely available to be quoted.
-1.82     2022-12-01   Bug fix: Added some safety checks when reading the
-                      configuration file
-1.81     2022-11-26   Refactored the way the configuration file is read. Also,
-                      the color configuration files now can just specify
-					  attribute characters, without the control character.
-1.80     2022-07-04   Added the ability to change/set the text color (using the
-                      CTRL-K hotkey).  If desired, changing the text color can
-                      be disabled if, and the colors can be saved as ANSI
-                      (rather than Synchronet attribute codes) for compatibility
-                      with other BBS software & message readers. The
-                      allowColorSelection option in SlyEdit.cfg specifies
-                      whether or not to allow changing text colors, and the
-                      saveColorsAsANSI option specifies whether or not to save
-                      the message colors as ANSI.
-1.79     2022-06-21   JS strict mode enabled. Small JS issues fixed.
-1.78     2022-06-09   Removed high-ascii characters from the SlyEdit JS files;
-                      used ascii() with their numeric ASCII values instead. This
-					  should avoid issues with text editors converting
-					  characters incorrectly.
-1.77     2022-05-27   Fixed a few instances where SlyEdit was trying to access
-                      sub-board information with an empty sub-board code (in the
-					  rare case when no sub-boards are configured).
-1.76     2022-03-05   When selecting quote lines in a reply message, SlyEdit now
-                      remembers the position in the quote selection menu so that
-					  the quote menu isn't always at the top whenever it's
-					  opened again.  This issue may have been introduced when
-					  SlyEdit was refactored to use DDLightbarMenu for its
-					  lightbar stuff.
-1.75     2021-12-11   Refactored the cross-post menu and quote selection window
-                      to use DDLightbarMenu instead of SlyEdit's own lightbar
-					  code.
-1.74     2021-01-23   Making use of the new K_NUL and checking user input
-                      against null, SlyEdit no longer thinks a 0x0 (sent with
-					  CTRL-Space on a Mac) is a timeout.  K_NUL was added on
-					  Jan. 21, 2021 by Rob Swindell. (This update was from Deon
-					  George)
-1.73     2020-03-31   Now uses DDLightbarMenu instead of SlyEdit's own internal
-                      choice menu.
-1.72     2020-03-04   For cross-posting, to make sure the user can post in a
-                      sub-board, SlyEdit now checks the can_post property of the
-					  sub-board rather than checking the ARS.  The can_post
-					  property covers more cases.
-1.71     2020-03-03   Added a new configuration option, allowSpellCheck, which
-                      the sysop can use to configure whether or not spell check
-					  is allowed.  You might want to disable spell check if the
-					  spell check feature causes SlyEdit to abort with an error
-					  saying it's out of memory.
-1.70     2019-08-15   Fix for a bug introduced in the flowing-line update in
-                      1.68 where some quote blocks were sometimes not being
-					  included when saving a message.  Also, quote lines are now
-					  wrapped to the user's terminal width rather than 80
-					  columns.
-1.69     2019-08-14   Updated to only use console.inkey() for user input and not
-                      use console.getkey() anymore. The change was made in the
-					  getUserKey() function in SlyEdit_Misc.js. Also, SlyEdit
-					  will now write the editor style (ICE or DCT) to result.ed
-					  at the end when a message is saved.  Also, when editing a
-					  message, if the cursor is at the end of the last line and
-					  the user presses the DEL key, then treat it as a
-					  backspace. Some terminals send a delete for backspace,
-					  particularly with keyboards that have a delete key but no
-					  backspace key.
-1.68     2019-08-09   Updated to honor the SUB_ANON and SUB_AONLY flags for the
-                      sub-boards when cross-posting so that the "from" name is
-					  "Anonymous" if either of those flags enabled.
-                      Updated to allow message uploading. Started working on
-					  updates to save new text lines as one long line, to help
-					  with word wrapping in offline readers etc.
-1.67     2019-07-21   Now supports the RESULT.ED drop file, with the ability to
-                      change the subject. Synchronet 3.17c development builds
-					  from July 21, 2019 onward support result.ed even for
-					  editors configured for QuickBBS MSGINF/MSGTMP.
-1.66     2019-05-29   Added more parsing for dictionary filenames for 'general'
-                      dictionaries and 'supplimental' ones
-1.65     2019-05-24   Added support for parsing many standard language tags for
-                      the dictionary filenames
-1.64     2019-05-24   Started working on adding a spell check feature. Also,
-                      updated to use require() instead of load() for .js
-					  scripts when possible.
-1.63     2019-04-18   Started working on supporting word-wrapping for the entire
-                      width of any terminal size, beyond 79.
-1.62     2018-11-11   Updated to save the message if the user disconnects, to
-                      support Synchronet's message draft feature that was added
-					  recently.
-1.61     2018-08-03   Updated to delete instances of User objects that are
-                      created, due to an optimization in Synchronet 3.17 that
-					  leaves user.dat open
-1.54     2017-12-26   Improved quoting with author initials when a > character
-                      exists in the quote lines: Not mistaking the preceding
-					  text as a quote prefix if it has 3 or more non-space
-					  characters before the >.  Also fixed an issue where
-					  wrapped quote lines were sometimes missing the quote line
-					  prefix.
-1.53     2017-12-19   Updated the PageUp and PageDown keys to ensure they match
-                      what's in sbbsdefs.js, since Synchronet added key codes
-					  for those keys on December 17, 2018.  SlyEdit should still
-					  work with older and newer builds of Synchronet, with or
-					  without the updated sbbsdefs.js.
-1.52     2017-12-17   Added the ability for the sysop to toggle whether or not
-                      to allow users to edit quote lines, using the
-					  configuration option allowEditQuoteLines.
-.. Removed some history comments ..
-1.00     2009-08-22   Initial public release
-         2009-05-11   Started development
diff --git a/docs/slyedit_readme.txt b/docs/slyedit_readme.txt
index a40e433dc87b8f9311abdd8d2972036c12879f2b..d4480717d07496dc9a5297c9473aeed0be59f504 100644
--- a/docs/slyedit_readme.txt
+++ b/docs/slyedit_readme.txt
@@ -922,6 +922,15 @@ message to lower-case and comparing them with the words in the dictionary.
 ===================
 Version  Date         Description
 -------  ----         -----------
+1.89d    2025-01-26   User inactivity timeout improvement (via use of
+                      console.getkey() instead of the custom function that was
+                      being used)
+1.89c    2024-10-29   Open the quote file in binary mode to avoid EOF issues on
+                      Windows if a unicode "right arrow" code exists in the
+                      message, which would get truncated to ASCII Ctrl-Z (ASCII
+                      26), which is interpreted as EOF on Windows.
+1.89b    2024-05-11   In SlyEdit_Misc.js, check to see that
+                      xtrn_area.editor[user.editor] is an object before using it.
 1.89a    2024-05-04   Don't line-wrap poll messages for quoting, as that could
                       mess up the formatting of the poll options.  Also, a
                       minor fix for the 'to' name length in DCT mode when using
@@ -935,6 +944,10 @@ Version  Date         Description
                       wrapping logic is also called for prepending quoted text
                       with the quote prefix, so (for now) there needs to be a
                       default quote wrap width.
+1.88d    2024-02-16   Header display update for UTF-8. And printing from/to/subj
+                      after writing the header with empty data so that the
+                      header 'graphic' characters & everything lines up
+                      properly.
 1.88c    2024-02-12   UTF-8 support in the displayed header and when quoting
                       text and when quoting message text
 1.88b    2024-02-11   Previous change reverted; now has "real" UTF-8 support.