diff --git a/exec/text_sec.js b/exec/text_sec.js
index c0bc1c8677a261c3a180e19b7fe665dcb44bff1a..bc8207a1ef571c42653d9c8a6f9520b9c2c1b652 100644
--- a/exec/text_sec.js
+++ b/exec/text_sec.js
@@ -76,6 +76,7 @@ while(bbs.online) {
 		break;
 	cursec--;
 	while(bbs.online) {
+		var prev;
 		var list = read_list(usrsec[cursec]);
 		var menu = "text" + (cursec + 1);
 		if(bbs.menu_exists(menu))
@@ -93,7 +94,7 @@ while(bbs.online) {
 		} else
 			console.mnemonics(bbs.text(WhichTextFile));
 		var cmd = console.getkeys(keys, list.length);
-		if(cmd == 'Q' || !cmd)
+		if(cmd == 'Q' || (!cmd && !prev))
 			break;
 		switch(cmd) {
 			case 'D':
@@ -104,7 +105,7 @@ while(bbs.online) {
 				var i = 0;
 				if(list.length) {
 					console.print(bbs.text(AddTextFileBeforeWhich));
-					i = console.getnum(list.length + 1);
+					i = console.getnum(list.length + 1, list.length + 2);
 					if(i < 1)
 						break;
 					i--;
@@ -123,12 +124,16 @@ while(bbs.online) {
 					}
 				}
 				console.print(format(bbs.text(AddTextFilePath)
-					,system.data_dir, usrsec[cursec].code));
-				var path = console.getstr(path, 128, K_EDIT|K_LINE);
+					,system.data_dir, usrsec[cursec].code.toLowerCase()));
+				var path = console.getstr(path, 128, K_EDIT|K_LINE|K_TRIM);
 				if(!path || console.aborted)
 					break;
+				if(!file_exists(path))
+					path = backslash(txtsec_data(usrsec[cursec])) + path;
+				console.printfile(path);
+				console.crlf();
 				console.print(bbs.text(AddTextFileDesc));
-				var desc = console.getstr(file_getname(path), 70, K_EDIT|K_LINE);
+				var desc = console.getstr(file_getname(path), 70, K_EDIT|K_LINE|K_TRIM|K_AUTODEL);
 				if(!desc || console.aborted)
 					break;
 				list.splice(i, 0, { name: file_getname(path), desc: desc, path: path });
@@ -156,16 +161,21 @@ while(bbs.online) {
 				i--;
 				console.print("Desc: ");
 				{
-					var str = console.getstr(list[i].desc, 75, K_EDIT|K_LINE);
-					if(str && !console.aborted)
+					var str = console.getstr(list[i].desc, 75, K_EDIT|K_LINE|K_AUTODEL|K_TRIM);
+					if(str && !console.aborted) {
 						list[i].desc = str;
+						write_list(usrsec[cursec], list);
+					}
 				}
 				if(!console.aborted
 					&& !console.noyes("Edit " + file_getname(list[i].path)))
 					console.editfile(list[i].path);
 				break;
 			default:
-				if(typeof(cmd) == "number") {
+				if(!cmd && typeof(prev) == "number")
+					cmd = prev + 1;
+				if(typeof(cmd) == "number" && cmd <= list.length) {
+					prev = cmd;
 					cmd--;
 					console.attributes = LIGHTGRAY;
 					if(!bbs.compare_ars(list[cmd].ars)) {
@@ -175,6 +185,8 @@ while(bbs.online) {
 					var mode = P_OPENCLOSE | P_CPM_EOF;
 					if(list[cmd].mode !== undefined)
 						mode = eval(list[cmd].mode);
+					if(list[cmd].petscii_graphics)
+						console.putbyte(142);
 					if(list[cmd].tail)
 						console.printtail(list[cmd].path, list[cmd].tail, mode);
 					else