diff --git a/public/index.html b/public/index.html
index 8769e034b..52ce17239 100644
--- a/public/index.html
+++ b/public/index.html
@@ -61,15 +61,18 @@
//New chats made with characters will use this new formatting.
//Useable variable is (( humanizedISO8601Datetime ))
- var baseDate = new Date(Date.now());
- var humanYear = baseDate.getFullYear();
- var humanMonth = (baseDate.getMonth()+1);
- var humanDate = baseDate.getDate();
- var humanHour = (baseDate.getHours() < 10? '0' : '') + baseDate.getHours();
- var humanMinute = (baseDate.getMinutes() < 10? '0' : '') + baseDate.getMinutes();
- var humanSecond = (baseDate.getSeconds() < 10? '0' : '') + baseDate.getSeconds();
- var humanMillisecond = (baseDate.getMilliseconds() < 10? '0' : '') + baseDate.getMilliseconds();
- var humanizedISO8601DateTime = (humanYear+"-"+humanMonth+"-"+humanDate+" @"+humanHour+"h "+humanMinute+"m "+humanSecond+"s "+humanMillisecond+"ms");
+ function humanizedISO8601DateTime() {
+ let baseDate = new Date(Date.now());
+ let humanYear = baseDate.getFullYear();
+ let humanMonth = (baseDate.getMonth()+1);
+ let humanDate = baseDate.getDate();
+ let humanHour = (baseDate.getHours() < 10? '0' : '') + baseDate.getHours();
+ let humanMinute = (baseDate.getMinutes() < 10? '0' : '') + baseDate.getMinutes();
+ let humanSecond = (baseDate.getSeconds() < 10? '0' : '') + baseDate.getSeconds();
+ let humanMillisecond = (baseDate.getMilliseconds() < 10? '0' : '') + baseDate.getMilliseconds();
+ let HumanizedDateTime = (humanYear+"-"+humanMonth+"-"+humanDate+" @"+humanHour+"h "+humanMinute+"m "+humanSecond+"s "+humanMillisecond+"ms");
+ return HumanizedDateTime;
+ };
var default_ch_mes = "Hello";
@@ -673,7 +676,7 @@
chat[chat.length-1]['name'] = name1;
chat[chat.length-1]['is_user'] = true;
chat[chat.length-1]['is_name'] = true;
- chat[chat.length-1]['send_date'] = Date.now();
+ chat[chat.length-1]['send_date'] = humanizedISO8601DateTime();
chat[chat.length-1]['mes'] = textareaText;
addOneMessage(chat[chat.length-1]);
}
@@ -1090,12 +1093,13 @@
chat[chat.length-1]['name'] = name2;
chat[chat.length-1]['is_user'] = false;
chat[chat.length-1]['is_name'] = this_mes_is_name;
- chat[chat.length-1]['send_date'] = Date.now();
+ chat[chat.length-1]['send_date'] = humanizedISO8601DateTime();
getMessage = $.trim(getMessage);
chat[chat.length-1]['mes'] = getMessage;
addOneMessage(chat[chat.length-1]);
$( "#send_but" ).css("display", "inline");
$( "#loading_mes" ).css("display", "none");
+console.log('/savechat called by /Generate');
saveChat();
}else{
//console.log('run force_name2 protocol');
@@ -1157,6 +1161,7 @@
});
}
async function getChat() {
+console.log('/getChat entered');
//console.log(characters[this_chid].chat);
jQuery.ajax({
type: 'POST',
@@ -1177,13 +1182,16 @@
}
//chat = data;
chat_create_date = chat[0]['create_date'];
+console.log('/getchat saw chat_create_date: '+chat_create_date);
chat.shift();
}else{
- chat_create_date = Date.now();
+ chat_create_date = humanizedISO8601DateTime();
}
//console.log(chat);
+console.log('getChatResults called by /getchat');
getChatResult();
+console.log('savechat called by /getchat');
saveChat();
},
error: function (jqXHR, exception) {
@@ -1213,7 +1221,7 @@
chat[0]['name'] = name2;
chat[0]['is_user'] = false;
chat[0]['is_name'] = true;
- chat[0]['send_date'] = Date.now();
+ chat[0]['send_date'] = humanizedISO8601DateTime();
if(characters[this_chid].first_mes != ""){
chat[0]['mes'] = characters[this_chid].first_mes;
}else{
@@ -1582,11 +1590,11 @@
}
});
}
+ //Make a new chat for selected character
if(popup_type == 'new_chat' && this_chid != undefined && menu_type != "create"){//Fix it; New chat doesn't create while open create character menu
clearChat();
chat.length = 0;
- characters[this_chid].chat = Date.now(); //RossAscends: added character name to new chat filenames and replaced Date.now() with humanizedISO8601DateTime;
- //characters[this_chid].chat = (name2 +' - '+ humanizedISO8601DateTime); //RossAscends: added character name to new chat filenames and replaced Date.now() with humanizedISO8601DateTime;
+ characters[this_chid].chat = (name2 +' - '+ humanizedISO8601DateTime()); //RossAscends: added character name to new chat filenames and replaced Date.now() with humanizedISO8601DateTime;
$("#selected_chat_pole").val(characters[this_chid].chat);
timerSaveEdit = setTimeout(() => {$("#create_button").click();},durationSaveEdit);
getChat();
@@ -1720,7 +1728,8 @@
if($("#form_create").attr("actiontype") == "createcharacter"){
if($("#character_name_pole").val().length > 0){
-
+console.log('/createcharacter entered');
+console.log('CharCreate formData: '+formData);
jQuery.ajax({
type: 'POST',
url: '/createcharacter',
@@ -1763,7 +1772,7 @@
select_rm_info("Character created");
$('#rm_info_block').transition({ opacity: 1.0 ,duration: 2000});
-
+console.log('/getcharacters called after /createchracter');
getCharacters();
}else{
$('#result_info').html(html);
@@ -1777,7 +1786,7 @@
$('#result_info').html("Name not entered");
}
}else{
- console.log($("#add_avatar_button").val());
+console.log('Avatar Button Value:'+$("#add_avatar_button").val());
jQuery.ajax({
type: 'POST',
@@ -2576,6 +2585,7 @@
});
//Select chat
async function getAllCharaChats() {
+ console.log('entered getAllCharaChats');
$('#select_chat_div').html('');
//console.log(characters[this_chid].chat);
jQuery.ajax({
@@ -2591,20 +2601,24 @@
success: function(data){
$('#load_select_chat_div').css('display', 'none');
let dataArr = Object.values(data);
+ console.log('dataArr = '+ Object.values(data));
data = dataArr.sort((a, b) => a['file_name'].localeCompare(b['file_name']));
data = data.reverse();
+
for (const key in data) {
let strlen = 40;
let mes = data[key]['mes'];
- if(mes.length > strlen){
- mes = '...'+mes.substring(mes.length - strlen);
- }
- $('#select_chat_div').append('
//
@@ -2614,11 +2628,14 @@
//chat = data;
//getChatResult();
//saveChat();
- },
+ console.log('Finished getAllCharaChats successfully');
+ },
error: function (jqXHR, exception) {
//getChatResult();
- console.log(exception);
+ console.log('Failed to Finished getAllCharaChats');
+ console.log(exception);
console.log(jqXHR);
+
}
});
}
@@ -2816,7 +2833,7 @@
$("#chat_import_file_type").val(format);
//console.log(format);
var formData = new FormData($("#form_import_chat").get(0));
-
+console.log('/importchat entered with: '+formData);
jQuery.ajax({
type: 'POST',
url: '/importchat',
diff --git a/public/style.css b/public/style.css
index fdca52129..8827130f6 100644
--- a/public/style.css
+++ b/public/style.css
@@ -1589,19 +1589,22 @@ label.checkbox :checked + span:after {
#select_chat_popup{
display: block;
grid-template-rows: 50px 100px 100px auto 45px;
- max-width:800px;
- height: 440px;
+ max-width: 800px;
+ max-height: 80vh;
+ height: min-content;
position: absolute;
z-index: 2066;
margin-left: auto;
margin-right: auto;
left: 0;
right: 0;
- margin-top: 21vh;
- box-shadow: 0 0 10px rgba(0,0,0,0.5);
- padding: 4px;
- background-color: rgba(0,0,0,0.7);
+ margin-top: 6vh;
+ box-shadow: 0 0 10px rgb(0 0 0 / 50%);
+ padding: 10px;
+ /* padding-top: 50px; */
+ background-color: rgba(0,0,0,0.7);
border-radius: 20px;
+ overflow-y: auto;
}
#select_chat_popup a{
color: #936f4a;
@@ -1633,7 +1636,8 @@ label.checkbox :checked + span:after {
overflow-x: hidden;
overflow-y: scroll;
- height: 350px;
+ height: min-content;
+ max-height:100%;
}
#select_chat_div hr{
margin:0;
diff --git a/server.js b/server.js
index cbf6caf0b..fdd37899c 100644
--- a/server.js
+++ b/server.js
@@ -58,16 +58,20 @@ var api_key_novel;
//New chats made with characters will use this new formatting.
//Useable variable is (( humanizedISO8601Datetime ))
- var baseDate = new Date(Date.now());
- var humanYear = baseDate.getFullYear();
- var humanMonth = (baseDate.getMonth()+1);
- var humanDate = baseDate.getDate();
- var humanHour = (baseDate.getHours() < 10? '0' : '') + baseDate.getHours();
- var humanMinute = (baseDate.getMinutes() < 10? '0' : '') + baseDate.getMinutes();
- var humanSecond = (baseDate.getSeconds() < 10? '0' : '') + baseDate.getSeconds();
- var humanMillisecond = (baseDate.getMilliseconds() < 10? '0' : '') + baseDate.getMilliseconds();
- var humanizedISO8601DateTime = (humanYear+"-"+humanMonth+"-"+humanDate+" @"+humanHour+"h "+humanMinute+"m "+humanSecond+"s "+humanMillisecond+"ms");
+
+ function humanizedISO8601DateTime() {
+ let baseDate = new Date(Date.now());
+ let humanYear = baseDate.getFullYear();
+ let humanMonth = (baseDate.getMonth()+1);
+ let humanDate = baseDate.getDate();
+ let humanHour = (baseDate.getHours() < 10? '0' : '') + baseDate.getHours();
+ let humanMinute = (baseDate.getMinutes() < 10? '0' : '') + baseDate.getMinutes();
+ let humanSecond = (baseDate.getSeconds() < 10? '0' : '') + baseDate.getSeconds();
+ let humanMillisecond = (baseDate.getMilliseconds() < 10? '0' : '') + baseDate.getMilliseconds();
+ let HumanizedDateTime = (humanYear+"-"+humanMonth+"-"+humanDate+" @"+humanHour+"h "+humanMinute+"m "+humanSecond+"s "+humanMillisecond+"ms");
+ return HumanizedDateTime;
+ };
var is_colab = false;
var charactersPath = 'public/characters/';
@@ -281,7 +285,7 @@ app.post("/generate", jsonParser, function(request, response_generate = response
});
});
app.post("/savechat", jsonParser, function(request, response){
- //console.log('/savechat/ entered');
+console.log(humanizedISO8601DateTime()+':/savechat/ entered');
//console.log(request.data);
//console.log(request.body.bg);
//const data = request.body;
@@ -289,8 +293,10 @@ app.post("/savechat", jsonParser, function(request, response){
//console.log(request.body.chat);
//var bg = "body {background-image: linear-gradient(rgba(19,21,44,0.75), rgba(19,21,44,0.75)), url(../backgrounds/"+request.body.bg+");}";
var dir_name = String(request.body.avatar_url).replace('.png','');
+console.log(humanizedISO8601DateTime()+':/savechat sees '+dir_name+' as the character name (derived from avatar PNG filename)');
let chat_data = request.body.chat;
let jsonlData = chat_data.map(JSON.stringify).join('\n');
+console.log(humanizedISO8601DateTime()+':/savechat saving a chat named '+request.body.file_name+'.jsonl');
fs.writeFile(chatsPath+dir_name+"/"+request.body.file_name+'.jsonl', jsonlData, 'utf8', function(err) {
if(err) {
response.send(err);
@@ -310,7 +316,7 @@ app.post("/getchat", jsonParser, function(request, response){
//console.log(request);
//console.log(request.body.chat);
//var bg = "body {background-image: linear-gradient(rgba(19,21,44,0.75), rgba(19,21,44,0.75)), url(../backgrounds/"+request.body.bg+");}";
- //console.log('/getchat entered');
+console.log(humanizedISO8601DateTime()+':/getchat entered');
var dir_name = String(request.body.avatar_url).replace('.png','');
fs.stat(chatsPath+dir_name, function(err, stat) {
@@ -327,7 +333,7 @@ app.post("/getchat", jsonParser, function(request, response){
fs.stat(chatsPath+dir_name+"/"+request.body.file_name+".jsonl", function(err, stat) {
if (err === null) { //if no error (the file exists), read the file
-
+console.log(humanizedISO8601DateTime()+':/getchat tries to access: '+chatsPath+dir_name+'/'+request.body.file_name+'.jsonl');
if(stat !== undefined){
fs.readFile(chatsPath+dir_name+"/"+request.body.file_name+".jsonl", 'utf8', (err, data) => {
if (err) {
@@ -355,11 +361,8 @@ app.post("/getchat", jsonParser, function(request, response){
console.error(err);
response.send({});
return;
-
}
}
-
-
});
@@ -415,7 +418,7 @@ function checkServer(){
//***************** Main functions
function charaFormatData(data){
- var char = {"name": data.ch_name, "description": data.description, "personality": data.personality, "first_mes": data.first_mes, "avatar": 'none', "chat": Date.now(), "mes_example": data.mes_example, "scenario": data.scenario, "create_date": Date.now()};
+ var char = {"name": data.ch_name, "description": data.description, "personality": data.personality, "first_mes": data.first_mes, "avatar": 'none', "chat": data.ch_name+' - '+humanizedISO8601DateTime(), "mes_example": data.mes_example, "scenario": data.scenario, "create_date": humanizedISO8601DateTime};
return char;
}
app.post("/createcharacter", urlencodedParser, function(request, response){
@@ -911,12 +914,14 @@ app.post("/getallchatsofcharacter", jsonParser, function(request, response){
var char_dir = (request.body.avatar_url).replace('.png','')
fs.readdir(chatsPath+char_dir, (err, files) => {
if (err) {
+ console.log('found error in history loading');
console.error(err);
response.send({error: true});
return;
}
// filter for JSON files
+ console.log('looking for JSONL files');
const jsonFiles = files.filter(file => path.extname(file) === '.jsonl');
// sort the files by name
@@ -924,41 +929,46 @@ app.post("/getallchatsofcharacter", jsonParser, function(request, response){
// print the sorted file names
var chatData = {};
let ii = jsonFiles.length; //this is the number of files belonging to the character
-
- for(let i = jsonFiles.length-1; i >= 0; i--){
- const file = jsonFiles[i];
+ if (ii !== 0) {
+ console.log('found '+ii+' chat logs to load');
+ for(let i = jsonFiles.length-1; i >= 0; i--){
+ const file = jsonFiles[i];
+ const fileStream = fs.createReadStream(chatsPath+char_dir+'/'+file);
+ const rl = readline.createInterface({
+ input: fileStream,
+ crlfDelay: Infinity
+ });
- const fileStream = fs.createReadStream(chatsPath+char_dir+'/'+file);
- const rl = readline.createInterface({
- input: fileStream,
- crlfDelay: Infinity
- });
-
- let lastLine;
- rl.on('line', (line) => {
- lastLine = line;
- });
- rl.on('close', () => {
- if(lastLine){
- let jsonData = JSON.parse(lastLine);
- if(jsonData.name !== undefined){
- chatData[i] = {};
- chatData[i]['file_name'] = file;
- chatData[i]['mes'] = jsonData['mes'];
- ii--;
- if(ii === 0){
- response.send(chatData);
- }
- }else{
- return;
- }
- }
- rl.close();
- });
- }
- });
-
-});
+ let lastLine;
+ rl.on('line', (line) => {
+ lastLine = line;
+ });
+ rl.on('close', () => {
+ if(lastLine){
+ let jsonData = JSON.parse(lastLine);
+ if(jsonData.name !== undefined){
+ chatData[i] = {};
+ chatData[i]['file_name'] = file;
+ chatData[i]['mes'] = jsonData['mes'];
+ ii--;
+ if(ii === 0){
+ console.log('ii count went to zero, responding with chatData');
+ response.send(chatData);
+ }
+ }else{
+ console.log('just returning from getallchatsofcharacter');
+ return;
+ }
+ }
+ console.log('successfully closing getallchatsofcharacter');
+ rl.close();
+ });
+ };
+ }else{
+ console.log('Found No Chats. Exiting Load Routine.');
+ response.send({error: true});
+ };
+ })});
function getPngName(file){
let i = 1;
let base_name = file;
@@ -969,6 +979,7 @@ function getPngName(file){
return file;
}
app.post("/importcharacter", urlencodedParser, function(request, response){
+
if(!request.body) return response.sendStatus(400);
let png_name = '';
@@ -987,12 +998,12 @@ app.post("/importcharacter", urlencodedParser, function(request, response){
if(jsonData.name !== undefined){
png_name = getPngName(jsonData.name);
- let char = {"name": jsonData.name, "description": jsonData.description ?? '', "personality": jsonData.personality ?? '', "first_mes": jsonData.first_mes ?? '', "avatar": 'none', "chat": Date.now(), "mes_example": jsonData.mes_example ?? '', "scenario": jsonData.scenario ?? '', "create_date": Date.now()};
+ let char = {"name": jsonData.name, "description": jsonData.description ?? '', "personality": jsonData.personality ?? '', "first_mes": jsonData.first_mes ?? '', "avatar": 'none', "chat": humanizedISO8601DateTime(), "mes_example": jsonData.mes_example ?? '', "scenario": jsonData.scenario ?? '', "create_date": humanizedISO8601DateTime};
char = JSON.stringify(char);
charaWrite('./public/img/fluffy.png', char, png_name, response, {file_name: png_name});
}else if(jsonData.char_name !== undefined){//json Pygmalion notepad
png_name = getPngName(jsonData.char_name);
- let char = {"name": jsonData.char_name, "description": jsonData.char_persona ?? '', "personality": '', "first_mes": jsonData.char_greeting ?? '', "avatar": 'none', "chat": Date.now(), "mes_example": jsonData.example_dialogue ?? '', "scenario": jsonData.world_scenario ?? '', "create_date": Date.now()};
+ let char = {"name": jsonData.char_name, "description": jsonData.char_persona ?? '', "personality": '', "first_mes": jsonData.char_greeting ?? '', "avatar": 'none', "chat": humanizedISO8601DateTime(), "mes_example": jsonData.example_dialogue ?? '', "scenario": jsonData.world_scenario ?? '', "create_date": humanizedISO8601DateTime};
char = JSON.stringify(char);
charaWrite('./public/img/fluffy.png', char, png_name, response, {file_name: png_name});
}else{
@@ -1008,7 +1019,7 @@ app.post("/importcharacter", urlencodedParser, function(request, response){
png_name = getPngName(jsonData.name);
if(jsonData.name !== undefined){
- let char = {"name": jsonData.name, "description": jsonData.description ?? '', "personality": jsonData.personality ?? '', "first_mes": jsonData.first_mes ?? '', "avatar": 'none', "chat": Date.now(), "mes_example": jsonData.mes_example ?? '', "scenario": jsonData.scenario ?? '', "create_date": Date.now()};
+ let char = {"name": jsonData.name, "description": jsonData.description ?? '', "personality": jsonData.personality ?? '', "first_mes": jsonData.first_mes ?? '', "avatar": 'none', "chat": humanizedISO8601DateTime(), "mes_example": jsonData.mes_example ?? '', "scenario": jsonData.scenario ?? '', "create_date": humanizedISO8601DateTime};
char = JSON.stringify(char);
charaWrite('./uploads/'+filedata.filename, char, png_name, response, {file_name: png_name});
/*
@@ -1040,6 +1051,7 @@ app.post("/importcharacter", urlencodedParser, function(request, response){
});
app.post("/importchat", urlencodedParser, function(request, response){
+console.log(humanizedISO8601DateTime()+':/importchat begun');
if(!request.body) return response.sendStatus(400);
var format = request.body.file_type;
@@ -1063,11 +1075,12 @@ app.post("/importchat", urlencodedParser, function(request, response){
const jsonData = JSON.parse(data);
var new_chat = [];
if(jsonData.histories !== undefined){
+console.log('/importchat confirms JSON histories are defined');
let i = 0;
new_chat[i] = {};
new_chat[0]['user_name'] = 'You';
new_chat[0]['character_name'] = ch_name;
- new_chat[0]['create_date'] = Date.now() //Date.now();
+ new_chat[0]['create_date'] = humanizedISO8601DateTime() //Date.now();
i++;
jsonData.histories.histories[0].msgs.forEach(function(item) {
new_chat[i] = {};
@@ -1078,12 +1091,13 @@ app.post("/importchat", urlencodedParser, function(request, response){
}
new_chat[i]['is_user'] = item.src.is_human;
new_chat[i]['is_name'] = true;
- new_chat[i]['send_date'] = Date.now() //Date.now();
+ new_chat[i]['send_date'] = humanizedISO8601DateTime() //Date.now();
new_chat[i]['mes'] = item.text;
i++;
});
const chatJsonlData = new_chat.map(JSON.stringify).join('\n');
- fs.writeFile(chatsPath+avatar_url+'/'+ch_name+' - '+humanizedISO8601DateTime+' imported.jsonl', chatJsonlData, 'utf8', function(err) { //added ch_name and replaced Date.now() with humanizedISO8601DateTime
+console.log('/importchat saving a file: '+ch_name+' - '+humanizedISO8601DateTime()+' imported.jsonl');
+ fs.writeFile(chatsPath+avatar_url+'/'+ch_name+' - '+humanizedISO8601DateTime()+' imported.jsonl', chatJsonlData, 'utf8', function(err) { //added ch_name and replaced Date.now() with humanizedISO8601DateTime
if(err) {
response.send(err);
@@ -1103,6 +1117,7 @@ app.post("/importchat", urlencodedParser, function(request, response){
});
}
if(format === 'jsonl'){
+console.log(humanizedISO8601DateTime()+':imported chat format is JSONL');
const fileStream = fs.createReadStream('./uploads/'+filedata.filename);
const rl = readline.createInterface({
input: fileStream,
@@ -1113,7 +1128,8 @@ app.post("/importchat", urlencodedParser, function(request, response){
let jsonData = JSON.parse(line);
if(jsonData.user_name !== undefined){
- fs.copyFile('./uploads/'+filedata.filename, chatsPath+avatar_url+'/'+ch_name+' - '+humanizedISO8601DateTime+'.jsonl', (err) => { //added character name and replaced Date.now() with humanizedISO8601DateTime
+console.log(humanizedISO8601DateTime()+':/importchat copying chat as '+ch_name+' - '+humanizedISO8601DateTime()+'.jsonl');
+ fs.copyFile('./uploads/'+filedata.filename, chatsPath+avatar_url+'/'+ch_name+' - '+humanizedISO8601DateTime()+'.jsonl', (err) => { //added character name and replaced Date.now() with humanizedISO8601DateTime
if(err) {
response.send({error:true});
return console.log(err);
@@ -1192,7 +1208,7 @@ function convertStage2(){
//console.log(directoriesB[key]);
var char = JSON.parse(charactersB[key]);
- char.create_date = Date.now();
+ char.create_date = humanizedISO8601DateTime();
charactersB[key] = JSON.stringify(char);
var avatar = 'public/img/fluffy.png';
if(char.avatar !== 'none'){
@@ -1222,7 +1238,7 @@ function convertStage2(){
}
let i = 0;
let ii = 0;
- new_chat_data[i] = {user_name:'You', character_name:char.name, create_date: Date.now()};
+ new_chat_data[i] = {user_name:'You', character_name:char.name, create_date: humanizedISO8601DateTime()};
i++;
ii++;
chat_data.forEach(function(mes) {
@@ -1238,14 +1254,14 @@ function convertStage2(){
new_chat_data[ii]['name'] = char.name;
new_chat_data[ii]['is_user'] = false;
new_chat_data[ii]['is_name'] = is_name;
- new_chat_data[ii]['send_date'] = Date.now(); //Date.now();
+ new_chat_data[ii]['send_date'] = humanizedISO8601DateTime(); //Date.now();
}else{
mes = mes.replace(this_chat_user_name+':','');
new_chat_data[ii]['name'] = 'You';
new_chat_data[ii]['is_user'] = true;
new_chat_data[ii]['is_name'] = true;
- new_chat_data[ii]['send_date'] = Date.now() //Date.now();
+ new_chat_data[ii]['send_date'] = humanizedISO8601DateTime(); //Date.now();
}
new_chat_data[ii]['mes'] = mes.trim();
@@ -1257,6 +1273,7 @@ function convertStage2(){
});
const jsonlData = new_chat_data.map(JSON.stringify).join('\n');
// Write the contents to the destination folder
+console.log('convertstage2 writing a file: '+chatsPath+char.name+'/' + file+'l');
fs.writeFileSync(chatsPath+char.name+'/' + file+'l', jsonlData);
});
//fs.rmSync('public/characters/'+directoriesB[key],{ recursive: true });