diff --git a/exec/load/dd_lightbar_menu.js b/exec/load/dd_lightbar_menu.js
index 6340cb4a6252a3a2fc0089b40d2d701ecef9e781..dd07949159d5c9c80205b567a81874a867cda9fe 100644
--- a/exec/load/dd_lightbar_menu.js
+++ b/exec/load/dd_lightbar_menu.js
@@ -3084,55 +3084,3 @@ function getKeyWithESCChars(pGetKeyMode, pInputTimeoutMS)
 
 	return userInput;
 }
-
-
-
-function logStackTrace(levels) {
-    var callstack = [];
-    var isCallstackPopulated = false;
-    try {
-        i.dont.exist += 0; //doesn't exist- that's the point
-    } catch (e) {
-        if (e.stack) { //Firefox / chrome
-            var lines = e.stack.split('\n');
-            for (var i = 0, len = lines.length; i < len; i++) {
-                    callstack.push(lines[i]);
-            }
-            //Remove call to logStackTrace()
-            callstack.shift();
-            isCallstackPopulated = true;
-        }
-        else if (window.opera && e.message) { //Opera
-            var lines = e.message.split('\n');
-            for (var i = 0, len = lines.length; i < len; i++) {
-                if (lines[i].match(/^\s*[A-Za-z0-9\-_\$]+\(/)) {
-                    var entry = lines[i];
-                    //Append next line also since it has the file info
-                    if (lines[i + 1]) {
-                        entry += " at " + lines[i + 1];
-                        i++;
-                    }
-                    callstack.push(entry);
-                }
-            }
-            //Remove call to logStackTrace()
-            callstack.shift();
-            isCallstackPopulated = true;
-        }
-    }
-    if (!isCallstackPopulated) { //IE and Safari
-        var currentFunction = arguments.callee.caller;
-        while (currentFunction) {
-            var fn = currentFunction.toString();
-            var fname = fn.substring(fn.indexOf("function") + 8, fn.indexOf("(")) || "anonymous";
-            callstack.push(fname);
-            currentFunction = currentFunction.caller;
-        }
-    }
-    if (levels) {
-        console.print(callstack.slice(0, levels).join("\r\n"));
-    }
-    else {
-        console.print(callstack.join("\r\n"));
-    }
-}
diff --git a/xtrn/DDMsgReader/DDMsgReader.js b/xtrn/DDMsgReader/DDMsgReader.js
index 12db746cfbe5f78222e544730938b252bc88ea1d..c62558434134080b3d88e6b047730582c2bfa7ac 100644
--- a/xtrn/DDMsgReader/DDMsgReader.js
+++ b/xtrn/DDMsgReader/DDMsgReader.js
@@ -88,6 +88,9 @@
  * 2023-01-30 Eric Oulashin     Version 1.62
  *                              (Hopefully) Improved display of ANSI messages which would previously look
  *                              bad with empty lines evrey other line
+ * 2023-02-01 Eric Oulashin     Version 1.63
+ *                              Fix for reading colors from the theme file. Also, the theme file now
+ *                              no longer needs the control character for color codes.
  */
 
 "use strict";
@@ -192,8 +195,8 @@ var ansiterm = require("ansiterm_lib.js", 'expand_ctrl_a');
 
 
 // Reader version information
-var READER_VERSION = "1.62";
-var READER_DATE = "2023-01-30";
+var READER_VERSION = "1.63";
+var READER_DATE = "2023-02-01";
 
 // Keyboard key codes for displaying on the screen
 var UP_ARROW = ascii(24);
@@ -8272,7 +8275,8 @@ function DigDistMsgReader_ReadConfigFile()
 			var commentPos = 0;      // Position of the start of a comment
 			var setting = null;      // A setting name (string)
 			var value = null;        // To store a value for a setting (string)
-			var onlySyncAttrsRegexWholeWord = new RegExp("^(\x01[krgybmcw01234567hinpq,;\.dtl<>\[\]asz])+$", 'i');
+			// A regex for attribute settings - Note that this doesn't contain some of the control codes
+			var onlySyncAttrsRegexWholeWord = new RegExp("^[\x01krgybmcw01234567hinq,;\.dtlasz]+$", 'i');;
 			while (!themeFile.eof)
 			{
 				// Read the next line from the config file.
@@ -8348,11 +8352,15 @@ function DigDistMsgReader_ReadConfigFile()
 					    (setting == "msgHdrToUserColor") || (setting == "msgHdrSubjColor") ||
 					    (setting == "msgHdrDateColor"))
 					{
-						// Trim leading & trailing spaces from the value when
-						// setting a color.  Also, replace any instances of "\x01"
-						// with the Synchronet attribute control character.
+						// Trim spaces from the color value
+						value = trimSpaces(value, true, true, true);
+						value = value.replace(/\\x01/g, "\x01"); // Replace "\x01" with control character
+						// If the value doesn't have any control characters, then add the control character
+						// before attribute characters
+						if (!/\x01/.test(value))
+							value = attrCodeStr(value);
 						if (onlySyncAttrsRegexWholeWord.test(value))
-							this.colors[setting] = trimSpaces(value, true, false, true).replace(/\\x01/g, "\x01");
+							this.colors[setting] = value;
 					}
 					// Text values
 					else if ((setting == "scrollbarBGChar") ||
@@ -18699,7 +18707,8 @@ function removeInitialColorFromMsgBody(pMsgBody)
 	var msgBodyLines = pMsgBody.split("\r\n", 3);
 	if (msgBodyLines.length == 3)
 	{
-		var onlySyncAttrsRegexWholeWord = new RegExp("^(\x01[krgybmcw01234567hinpq,;\.dtl<>\[\]asz])+$", 'i');
+		// A regex for attribute settings - Note that this doesn't contain some of the control codes
+		var onlySyncAttrsRegexWholeWord = new RegExp("^[\x01krgybmcw01234567hinq,;\.dtlasz]+$", 'i');;
 		var line1Match = /^  Re: .*/.test(strip_ctrl(msgBodyLines[0]));
 		var line2Match = /^  By: .* on .*/.test(strip_ctrl(msgBodyLines[1]));
 		var line3OnlySyncAttrs = onlySyncAttrsRegexWholeWord.test(msgBodyLines[2]);
@@ -20415,6 +20424,30 @@ function chgCharInStr(pStr, pCharIndex, pNewText)
    return (pStr.substr(0, pCharIndex) + pNewText + pStr.substr(pCharIndex+1));
 }
 
+// Given a string of attribute characters, this function inserts the control code
+// in front of each attribute character and returns the new string.
+//
+// Parameters:
+//  pAttrCodeCharStr: A string of attribute characters (i.e., "YH" for yellow high)
+//
+// Return value: A string with the control character inserted in front of the attribute characters
+function attrCodeStr(pAttrCodeCharStr)
+{
+	if (typeof(pAttrCodeCharStr) !== "string")
+		return "";
+
+	var str = "";
+	// See this page for Synchronet color attribute codes:
+	// http://wiki.synchro.net/custom:ctrl-a_codes
+	for (var i = 0; i < pAttrCodeCharStr.length; ++i)
+	{
+		var currentChar = pAttrCodeCharStr.charAt(i);
+		if (/[krgybmcwKRGYBMCWHhIiEeFfNn01234567]/.test(currentChar))
+			str += "\x01" + currentChar;
+	}
+	return str;
+}
+
 ///////////////////////////////////////////////////////////////////////////////////
 
 // For debugging: Writes some text on the screen at a given location with a given pause.
diff --git a/xtrn/DDMsgReader/DefaultTheme.cfg b/xtrn/DDMsgReader/DefaultTheme.cfg
index 4cacd29f0688ef16cd66a2b3fd2fe5b69b123c50..46643ebf929fdbd8734071a00abd9b6c9fccc2fe 100644
--- a/xtrn/DDMsgReader/DefaultTheme.cfg
+++ b/xtrn/DDMsgReader/DefaultTheme.cfg
@@ -1,252 +1,252 @@
 ; -------- Misc./General colors --------
 
 ; Message body color
-msgBodyColor=nw
+msgBodyColor=nw
 
 ; Read message confirmation colors
-readMsgConfirmColor=nc
-readMsgConfirmNumberColor=hc
+readMsgConfirmColor=nc
+readMsgConfirmNumberColor=hc
 
 ; Prompt for continuing to list messages after reading a message
-afterReadMsg_ListMorePromptColor=nc
+afterReadMsg_ListMorePromptColor=nc
 
 ; Continue prompt colors for the traditional interface
-tradInterfaceContPromptMainColor=ng ; Main text color
-tradInterfaceContPromptHotkeyColor=hc ; Hotkey color
-tradInterfaceContPromptUserInputColor=hg ; User input color
+tradInterfaceContPromptMainColor=ng ; Main text color
+tradInterfaceContPromptHotkeyColor=hc ; Hotkey color
+tradInterfaceContPromptUserInputColor=hg ; User input color
 
 ; Text for "Loading personal mail..." %s will be replaced with "personal mail".
-loadingPersonalMailText=ncLoading %s...
+loadingPersonalMailText=\x01n\x01cLoading %s...
 
 ; Prompt text to confirm message deletion (without the ? at the end).  %d will
 ; be replaced with the message number.
-msgDelConfirmText=nhyDeletenc message #h%dnc: Are you sure
+msgDelConfirmText=\x01n\x01h\x01yDelete\x01n\x01c message #\x01h%d\x01n\x01c: Are you sure
 ; Prompt text to confirm deletion of selected messages
-delSelectedMsgsConfirmText=nhyDelete selected messages: Are you sure
+delSelectedMsgsConfirmText=\x01n\x01h\x01yDelete selected messages: Are you sure
 ; Text for when a message has been marked for deletion.  %d will be replaced
 ; with the message number.
-msgDeletedText=ncMessage #h%dnc has been marked for deletion.
+msgDeletedText=\x01n\x01cMessage #\x01h%d\x01n\x01c has been marked for deletion.
 ; Text for when selected (multiple) messages have been deleted
-selectedMsgsDeletedText=ncSelected messages have been marked for deletion.
+selectedMsgsDeletedText=\x01n\x01cSelected messages have been marked for deletion.
 ; Error text for cannot delete a message because the message is not the user's
 ; message or the user is not a sysop.  %d will be replaced with the message
 ; number.
-cannotDeleteMsgText_notYoursNotASysop=nhwCannot delete message #y%d wbecause it's not yours or you're not a sysop.
+cannotDeleteMsgText_notYoursNotASysop=\x01n\x01h\x01wCannot delete message #\x01y%d \x01wbecause it's not yours or you're not a sysop.
 ; Error text for cannot delete a message because it's not the user's last
 ; posted message in a sub-board.  %d will be replaced with the message number.
-cannotDeleteMsgText_notLastPostedMsg=nhg* yCannot delete message #%d. You can only delete your last message in this area.
+cannotDeleteMsgText_notLastPostedMsg=\x01n\x01h\x01g* \x01yCannot delete message #%d. You can only delete your last message in this area.
 ; Error text for cannot delete all selected messages
-cannotDeleteAllSelectedMsgsText=nyh* Cannot delete all selected messages
+cannotDeleteAllSelectedMsgsText=\x01n\x01y\x01h* Cannot delete all selected messages
 
 ; Prompt text to confirm message edit (without the ? at the end).  %d will be
 ; replaced with the message number.
-msgEditConfirmText=ncEdit message #h%dnc: Are you sure
+msgEditConfirmText=\x01n\x01cEdit message #\x01h%d\x01n\x01c: Are you sure
 
 
 ; -------- Internal header lines displayed above a message --------
-msgHdrMsgNumColor=nbh
-msgHdrFromColor=nbh
-msgHdrToColor=nbh
-msgHdrToUserColor=ngh
-msgHdrSubjColor=nbh
-msgHdrDateColor=nbh
+msgHdrMsgNumColor=nbh
+msgHdrFromColor=nbh
+msgHdrToColor=nbh
+msgHdrToUserColor=ngh
+msgHdrSubjColor=nbh
+msgHdrDateColor=nbh
 
 
 ; -------- Message list colors & text --------
 
 ; Header line: "Current msg group:" - Normal cyan on blue background
-msgListHeaderMsgGroupTextColor=n7r ; Red on white background
+msgListHeaderMsgGroupTextColor=n7r ; Red on white background
 
 ; Header line: Message group name - High cyan
-msgListHeaderMsgGroupNameColor=b ; Blue (will use the background specified in the last color)
+msgListHeaderMsgGroupNameColor=b ; Blue (will use the background specified in the last color)
 
 ; Header line: "Current sub-board:" - Normal cyan on blue background
-msgListHeaderSubBoardTextColor=n7r ; Red on white background
+msgListHeaderSubBoardTextColor=n7r ; Red on white background
 
 ; Header line: Message sub-board name - High cyan
-msgListHeaderMsgSubBoardName=b ; Blue (will use the background specified in the last color)
+msgListHeaderMsgSubBoardName=b ; Blue (will use the background specified in the last color)
 
 ; Line with column headers - High white on black background
-msgListColHeader=nhw
+msgListColHeader=nhw
 
 ; Message information displayed in the message list
-msgListMsgNumColor=nhy
-msgListFromColor=nc
-msgListToColor=nc
-msgListSubjectColor=nc
-msgListScoreColor=nc
-msgListDateColor=hb
-msgListTimeColor=hb
+msgListMsgNumColor=nhy
+msgListFromColor=nc
+msgListToColor=nc
+msgListSubjectColor=nc
+msgListScoreColor=nc
+msgListDateColor=hb
+msgListTimeColor=hb
 ; Message information for messages written to the user
-msgListToUserMsgNumColor=nhy
-msgListToUserFromColor=hg
-msgListToUserToColor=hg
-msgListToUserSubjectColor=hg
-msgListToUserScoreColor=hg
-msgListToUserDateColor=hb
-msgListToUserTimeColor=hb
+msgListToUserMsgNumColor=nhy
+msgListToUserFromColor=hg
+msgListToUserToColor=hg
+msgListToUserSubjectColor=hg
+msgListToUserScoreColor=hg
+msgListToUserDateColor=hb
+msgListToUserTimeColor=hb
 ; Message information for messages from the user
-msgListFromUserMsgNumColor=nhy
-msgListFromUserFromColor=nc
-msgListFromUserToColor=nc
-msgListFromUserSubjectColor=nc
-msgListFromUserScoreColor=nc
-msgListFromUserDateColor=hb
-msgListFromUserTimeColor=hb
+msgListFromUserMsgNumColor=nhy
+msgListFromUserFromColor=nc
+msgListFromUserToColor=nc
+msgListFromUserSubjectColor=nc
+msgListFromUserScoreColor=nc
+msgListFromUserDateColor=hb
+msgListFromUserTimeColor=hb
 
 ; Message list highlight background color
-msgListHighlightBkgColor=4
+msgListHighlightBkgColor=4
 ; Message list highlighted message number
-msgListMsgNumHighlightColor=hy
+msgListMsgNumHighlightColor=hy
 ; Message list highlighted 'from' name
-msgListFromHighlightColor=hc
+msgListFromHighlightColor=hc
 ; Message list highlighted 'to' name
-msgListToHighlightColor=hc
+msgListToHighlightColor=hc
 ; Message list highlighted subject
-msgListSubjHighlightColor=hc
+msgListSubjHighlightColor=hc
 ; Message list highlighted score
-msgListScoreHighlightColor=hc
+msgListScoreHighlightColor=hc
 ; Message list highlighted date
-msgListDateHighlightColor=hw
+msgListDateHighlightColor=hw
 ; Message list highlighted time
-msgListTimeHighlightColor=hw
+msgListTimeHighlightColor=hw
 
 ; Colors for the lightbar message list help line text:
 ; Background
-lightbarMsgListHelpLineBkgColor=7
+lightbarMsgListHelpLineBkgColor=7
 ; The color for general text in the help line in the lightbar message list
-lightbarMsgListHelpLineGeneralColor=b
+lightbarMsgListHelpLineGeneralColor=b
 ; The color for the hotkeys in the help line in the lightbar message list
-lightbarMsgListHelpLineHotkeyColor=r
+lightbarMsgListHelpLineHotkeyColor=r
 ; The color for the ) separating the hotkeys from the general text in the
 ; help line in the lightbar message list
-lightbarMsgListHelpLineParenColor=m
+lightbarMsgListHelpLineParenColor=m
 
 ; Go to message number prompt text - Used for the G key in the message list to
 ; "go to" (move the screen/lightbar selection to) a specified message number
-goToMsgNumPromptText=ncGo to message # (or hENTERnc to cancel)gh: c
+goToMsgNumPromptText=\x01n\x01cGo to message # (or \x01hENTER\x01n\x01c to cancel)\x01g\x01h: \x01c
 
 ; -------- Colors for choosing a sub-board --------
-areaChooserMsgAreaNumColor=nwh
-areaChooserMsgAreaDescColor=nc
-areaChooserMsgAreaNumItemsColor=bh
-areaChooserMsgAreaHeaderColor=nyh
-areaChooserSubBoardHeaderColor=ng
-areaChooserMsgAreaMarkColor=gh
-areaChooserMsgAreaLatestDateColor=ng
-areaChooserMsgAreaLatestTimeColor=nm
+areaChooserMsgAreaNumColor=nwh
+areaChooserMsgAreaDescColor=nc
+areaChooserMsgAreaNumItemsColor=bh
+areaChooserMsgAreaHeaderColor=nyh
+areaChooserSubBoardHeaderColor=ng
+areaChooserMsgAreaMarkColor=gh
+areaChooserMsgAreaLatestDateColor=ng
+areaChooserMsgAreaLatestTimeColor=nm
 ; Highlighted colors for choosing a sub-board (for lightbar mode)
-areaChooserMsgAreaBkgHighlightColor=4
-areaChooserMsgAreaNumHighlightColor=wh
-areaChooserMsgAreaDescHighlightColor=c
-areaChooserMsgAreaDateHighlightColor=wh
-areaChooserMsgAreaTimeHighlightColor=wh
-areaChooserMsgAreaNumItemsHighlightColor=wh
+areaChooserMsgAreaBkgHighlightColor=4
+areaChooserMsgAreaNumHighlightColor=wh
+areaChooserMsgAreaDescHighlightColor=c
+areaChooserMsgAreaDateHighlightColor=wh
+areaChooserMsgAreaTimeHighlightColor=wh
+areaChooserMsgAreaNumItemsHighlightColor=wh
 
 ; Colors for the lightbar area chooser help line text:
 ; Background
-lightbarAreaChooserHelpLineBkgColor=7
+lightbarAreaChooserHelpLineBkgColor=7
 ; The color for general text in the help line in the lightbar message list
-lightbarAreaChooserHelpLineGeneralColor=b
+lightbarAreaChooserHelpLineGeneralColor=b
 ; The color for the hotkeys in the help line in the lightbar message list
-lightbarAreaChooserHelpLineHotkeyColor=r
+lightbarAreaChooserHelpLineHotkeyColor=r
 ; The color for the ) separating the hotkeys from the general text in the
 ; help line in the lightbar message list
-lightbarAreaChooserHelpLineParenColor=m
+lightbarAreaChooserHelpLineParenColor=m
 
 ; -------- Scrollable reader interface colors & text --------
 
 ; Scrollbar background color & character
-scrollbarBGColor=nhk
+scrollbarBGColor=nhk
 scrollbarBGChar=�
 ; Scrollbar scroll block color & character
-scrollbarScrollBlockColor=nhw
+scrollbarScrollBlockColor=nhw
 scrollbarScrollBlockChar=�
 ; Color for the line drawn in the 2nd to last line of the message
 ; area in the enhanced reader mode before a prompt
-enhReaderPromptSepLineColor=nhg
+enhReaderPromptSepLineColor=nhg
 ; Text to use for prompting the user whether or not to go to the previous or
 ; next message area (without the ? on the end)
-goToPrevMsgAreaPromptText=nchGo to the previous message area
-goToNextMsgAreaPromptText=nchGo to the next message area
+goToPrevMsgAreaPromptText=\x01n\x01c\x01hGo to the previous message area
+goToNextMsgAreaPromptText=\x01n\x01c\x01hGo to the next message area
 ; Colors for the enhanced reader help line text:
 ; Background
-enhReaderHelpLineBkgColor=7
+enhReaderHelpLineBkgColor=7
 ; The color for general text in the help line in the scrollable reader
 ; interface
-enhReaderHelpLineGeneralColor=b
+enhReaderHelpLineGeneralColor=b
 ; The color for the hotkeys in the help line in the scrollable reader
 ; interface
-enhReaderHelpLineHotkeyColor=r
+enhReaderHelpLineHotkeyColor=r
 ; The color for the ) separating the hotkeys from the general text in the
 ; help line in the scrollable reader interface
-enhReaderHelpLineParenColor=m
+enhReaderHelpLineParenColor=m
 ; The text to use for asking the user whether they want to post on a sub-board
 ; (for instance, after reading the last message).  The two %s will be replaced
 ; with the message group name and sub-board description, respectively.
-postOnSubBoard=ngPost on %s %s
+postOnSubBoard=\x01n\x01gPost on %s %s
 
 ; -------- Search & scan colors & text --------
 
 ; The first text displayed when doing a new message scan, before
 ; the sub-board/group/all prompt is displayed
-newMsgScanText=chNncew hMncessage hSnccan
+newMsgScanText=\x01c\x01hN\x01n\x01cew \x01hM\x01n\x01cessage \x01hS\x01n\x01ccan
 ; The first text displayed when doing a new-to-you message scan, before
 ; the sub-board/group/all prompt is displayed
-newToYouMsgScanText=chNncew hTnco hYncou hMncessage hSnccan
+newToYouMsgScanText=\x01c\x01hN\x01n\x01cew \x01hT\x01n\x01co \x01hY\x01n\x01cou \x01hM\x01n\x01cessage \x01hS\x01n\x01ccan
 ; The first text displayed when doing a all-messages-to-you message scan,
 ; before the sub-board/group/all prompt is displayed
-allToYouMsgScanText=chAncll hMncessages hTnco hYncou hSnccan
+allToYouMsgScanText=\x01c\x01hA\x01n\x01cll \x01hM\x01n\x01cessages \x01hT\x01n\x01co \x01hY\x01n\x01cou \x01hS\x01n\x01ccan
 ; Text to display when the message scan is complete
-msgScanCompleteText=nhcMncessage scan completehg.
+msgScanCompleteText=\x01n\x01h\x01cM\x01n\x01cessage scan complete\x01h\x01g.
 ; Text to display when the message scan has been aborted
-msgScanAbortedText=nhcMncessage scan hyiabortedn
+msgScanAbortedText=\x01n\x01h\x01cM\x01n\x01cessage scan \x01h\x01y\x01iaborted\x01n
 ; Text for "Searching (current sub-board: ...)" above the search text prompt
 ; (%s is replaced with the sub-board name)
-searchingSubBoardAbovePromptText=ncSearching (current sub-board: bh%snc)
+searchingSubBoardAbovePromptText=\x01n\x01cSearching (current sub-board: \x01b\x01h%s\x01n\x01c)
 ; For displaying the sub-board name when doing a search.  %s will be replaced
 ; with a sub-board name.
-searchingSubBoardText=ncSearching h%snc...
+searchingSubBoardText=\x01n\x01cSearching \x01h%s\x01n\x01c...
 ; No messages in a sub-board (i.e., trying to read a sub-board that has no
 ; messages).  %s will be replaced with a sub-board name.
-noMessagesInSubBoardText=nhbThere are no messages in the area w%sb.
+noMessagesInSubBoardText=\x01n\x01h\x01bThere are no messages in the area \x01w%s\x01b.
 ; For no search results found in a sub-board.  %s will be replaced with a
 ; sub-board name.
-noSearchResultsInSubBoardText=nhbNo messages were found in the area w%sb with the given search criteria.
+noSearchResultsInSubBoardText=\x01n\x01h\x01bNo messages were found in the area \x01w%s\x01b with the given search criteria.
 ; Prompt text to input a number of a message to read
-readMsgNumPromptText=nghi* ncRead message #: h
+readMsgNumPromptText=\x01n\x01g\x01h\x01i* \x01n\x01cRead message #: \x01h
 ; Invalid message number.  %d will be replaced with the message number.
-invalidMsgNumText=nyhInvalid message number: %d
+invalidMsgNumText=\x01n\x01y\x01hInvalid message number: %d
 ; A message has been deleted.  %d will be replaced with the message number.
-msgHasBeenDeletedText=nhg* yMessage #w%d yhas been deleted.
+msgHasBeenDeletedText=\x01n\x01h\x01g* \x01yMessage #\x01w%d \x01yhas been deleted.
 ; No kludge lines for this message
-noKludgeLinesForThisMsgText=nhyThere are no kludge lines for this message.
+noKludgeLinesForThisMsgText=\x01n\x01h\x01yThere are no kludge lines for this message.
 ; Text for "Seraching personal mail"
-searchingPersonalMailText=whSearching personal mail
+searchingPersonalMailText=\x01w\x01hSearching personal mail
 ; Text for prompting for search text
-searchTextPromptText=cEnter the search textgh:nc 
+searchTextPromptText=\x01cEnter the search text\x01g\x01h:\x01n\x01c 
 ; Text for prompting for a 'from' name
-fromNamePromptText=cEnter the 'from' name to search forgh:nc 
+fromNamePromptText=\x01cEnter the 'from' name to search for\x01g\x01h:\x01n\x01c 
 ; Text for prompting for a 'To' name
-toNamePromptText=cEnter the 'to' name to search forgh:nc 
+toNamePromptText=\x01cEnter the 'to' name to search for\x01g\x01h:\x01n\x01c 
 ; Text for an aborted operation (i.e., "Aborted")
-abortedText=nyhiAbortedn
+abortedText=\x01n\x01y\x01h\x01iAborted\x01n
 ; Text for no personal email messages
-noPersonalEmailText=ncYou have no messages.
+noPersonalEmailText=\x01n\x01cYou have no messages.
 
 ; -------- Traditional reader interface colors & text --------
 
 ; Text for the prompt for a message number for a message to be deleted
-deleteMsgNumPromptText=ncNumber of the message to be deleted (or hENTERnc to cancel)gh: c
+deleteMsgNumPromptText=\x01n\x01cNumber of the message to be deleted (or \x01hENTER\x01n\x01c to cancel)\x01g\x01h: \x01c
 ; Text for the prompt for a message number for a message to be edited
-editMsgNumPromptText=ncNumber of the message to be edited (or hENTERnc to cancel)gh: c
+editMsgNumPromptText=\x01n\x01cNumber of the message to be edited (or \x01hENTER\x01n\x01c to cancel)\x01g\x01h: \x01c
 
 ; Traditional/lightbar interface help screen text color
-tradInterfaceHelpScreenColor=nc
+tradInterfaceHelpScreenColor=nc
 
 ; -------- Colors for message header/kludge lines --------
-hdrLineLabelColor=nc
-hdrLineValueColor=nbh
+hdrLineLabelColor=nc
+hdrLineValueColor=nbh
 
 ; Selected message check mark color
-selectedMsgMarkColor=wh
\ No newline at end of file
+selectedMsgMarkColor=wh
\ No newline at end of file
diff --git a/xtrn/DDMsgReader/readme.txt b/xtrn/DDMsgReader/readme.txt
index aaab13182032c7602bf871abc529bbcb6d44f204..b5afffd6201617425ceece70c493ada695bd8bc2 100644
--- a/xtrn/DDMsgReader/readme.txt
+++ b/xtrn/DDMsgReader/readme.txt
@@ -1,6 +1,6 @@
                       Digital Distortion Message Reader
-                                 Version 1.62
-                           Release date: 2023-01-30
+                                 Version 1.63
+                           Release date: 2023-02-01
 
                                      by
 
diff --git a/xtrn/DDMsgReader/revision_history.txt b/xtrn/DDMsgReader/revision_history.txt
index 96464dd668acee6938c974d3c60fe4aeef6897cd..d65b24d707f491eccab26718d9d34f1dea1f7681 100644
--- a/xtrn/DDMsgReader/revision_history.txt
+++ b/xtrn/DDMsgReader/revision_history.txt
@@ -5,6 +5,9 @@ Revision History (change log)
 =============================
 Version  Date         Description
 -------  ----         -----------
+1.63     2023-02-01   Fix for reading colors from the theme file. Also, the
+                      theme file now no longer needs the control character for
+                      color codes.
 1.62     2023-01-30   (Hopefully) Improved display of ANSI messages which would
                       previously look bad with empty lines evrey other line
 1.61     2023-01-22   Fix: When replying to an email with an unknown sender