@@ -12,7 +12,7 @@ Current version indicated by LITEVER below.
1212-->
1313
1414<script>
15- const LITEVER = 204 ;
15+ const LITEVER = 205 ;
1616 const urlParams = new URLSearchParams(window.location.search);
1717 var localflag = true;
1818 const STORAGE_PREFIX = (localflag?"e_":"")+"kaihordewebui_";
@@ -2939,6 +2939,7 @@ Current version indicated by LITEVER below.
29392939 var temp_scenario = null;
29402940 var last_token_budget = ""; //to display token limits
29412941 var last_known_filename = "saved_story.json";
2942+ var backup_localmodeport = 5001; //sometimes we reattempt a different port, this stores a backup
29422943 var localmodeport = 5001;
29432944 var localmodehost = "localhost";
29442945 var localprotocol = "http://";
@@ -3639,6 +3640,7 @@ Current version indicated by LITEVER below.
36393640 if (inputport) {
36403641 localmodeport = parseInt(inputport);
36413642 }
3643+ backup_localmodeport = localmodeport;
36423644
36433645 let inputhost = urlParams.get('host');
36443646 sublocalpathname = "";
@@ -3947,15 +3949,21 @@ initializeInstructUIFunctionality();
39473949 }
39483950 function replace_noninstruct_placeholders(inputtxt,escape=false)
39493951 {
3952+ let firstopponent = localsettings.chatopponent;
3953+ if (firstopponent && firstopponent.includes("||$||")) {
3954+ let coarr = firstopponent.split("||$||");
3955+ coarr = coarr.filter(x => (x && x != ""));
3956+ firstopponent = coarr.length>0?coarr[0]:defaultchatopponent;
3957+ }
39503958 if(escape)
39513959 {
39523960 inputtxt = replaceAll(inputtxt,"{{user}}",escape_html(localsettings.chatname?localsettings.chatname:"User"),true);
3953- inputtxt = replaceAll(inputtxt,"{{char}}",escape_html(localsettings.chatopponent?localsettings.chatopponent :defaultchatopponent),true);
3961+ inputtxt = replaceAll(inputtxt,"{{char}}",escape_html(localsettings.chatopponent?firstopponent :defaultchatopponent),true);
39543962 }
39553963 else
39563964 {
39573965 inputtxt = replaceAll(inputtxt,"{{user}}",(localsettings.chatname?localsettings.chatname:"User"),true);
3958- inputtxt = replaceAll(inputtxt,"{{char}}",(localsettings.chatopponent?localsettings.chatopponent :defaultchatopponent),true);
3966+ inputtxt = replaceAll(inputtxt,"{{char}}",(localsettings.chatopponent?firstopponent :defaultchatopponent),true);
39593967 }
39603968
39613969 for(let i=0;i<placeholder_tags_data.length;++i)
@@ -5136,10 +5144,10 @@ initializeInstructUIFunctionality();
51365144 }
51375145 }
51385146
5139-
5140-
5141-
5142-
5147+ function clear_cors_proxy_flag()
5148+ {
5149+ uses_cors_proxy = false;
5150+ }
51435151
51445152 // attempt to connect to the selected backend
51455153 function attempt_connect(popup_aiselect = true)
@@ -9093,6 +9101,9 @@ initializeInstructUIFunctionality();
90939101 custom_cohere_key = "";
90949102
90959103 let epchoice = document.getElementById("customapidropdown").value;
9104+ document.getElementById("connectstatusproxied").classList.add("hidden");
9105+ document.getElementById("connectstatus").innerHTML = "Connecting";
9106+
90969107 if(epchoice==0) //ai horde
90979108 {
90989109 confirm_horde_models();
@@ -9125,6 +9136,7 @@ initializeInstructUIFunctionality();
91259136 custom_kobold_key = desiredkoboldkey;
91269137
91279138 let fetchedurl = apply_proxy_url(desiredkoboldendpoint + kobold_custom_mdl_endpoint);
9139+
91289140 fetch(fetchedurl,{
91299141 method: 'GET',
91309142 headers: get_kobold_header(),
@@ -9147,6 +9159,15 @@ initializeInstructUIFunctionality();
91479159 custom_kobold_endpoint = "";
91489160 render_gametext();
91499161 } else {
9162+
9163+ if(uses_cors_proxy && !is_local_url(fetchedurl))
9164+ {
9165+ document.getElementById("connectstatusproxied").classList.remove("hidden");
9166+ }else
9167+ {
9168+ document.getElementById("connectstatusproxied").classList.add("hidden");
9169+ }
9170+
91509171 //good to go
91519172 custom_kobold_endpoint = desiredkoboldendpoint;
91529173 custom_kobold_key = desiredkoboldkey;
@@ -9365,34 +9386,40 @@ initializeInstructUIFunctionality();
93659386
93669387 let is_local = is_local_url(custom_kobold_endpoint);
93679388
9368- if (uses_cors_proxy || is_local) {
9369- if(is_local && sublocalpathname!="")
9370- {
9371- sublocalpathname = ""; //one more try
9372- attempt_connect(false);
9373- }
9374- else if(is_local && reattempt_local_port80)
9375- {
9376- reattempt_local_port80 = false;
9377- localmodeport = 80;
9378- attempt_connect(false);
9379- }
9380- else
9389+ //we will go down the fallbacks one by one until we run out of options
9390+ localmodeport = backup_localmodeport;
9391+ if(is_local && sublocalpathname!="")
9392+ {
9393+ sublocalpathname = ""; // first fallback, check subdir paths
9394+ attempt_connect(false);
9395+ }
9396+ else if(reattempt_local_port80) // second fallback, try port 80
9397+ {
9398+ reattempt_local_port80 = false;
9399+ localmodeport = 80;
9400+ attempt_connect(false);
9401+ }
9402+ else if(!is_local && !uses_cors_proxy) //third fallback, use cors proxy if not a local IP
9403+ {
9404+ uses_cors_proxy = true; // fallback to cors proxy, this will remain for rest of session
9405+ connect_custom_endpoint(); //one more try
9406+ }
9407+ else //finally, we give up
9408+ {
9409+ msgbox("Failed to connect to Custom KoboldAI Endpoint!<br><br>Please check if KoboldAI is running at the url: " + desiredkoboldendpoint + "<br><br>You can also <a href='#' class='color_blueurl' onclick='hide_popups();display_endpoint_container();'>try a different URL or API type</a>.","Error Encountered",true);
9410+ selected_models = [];
9411+ selected_workers = [];
9412+ custom_kobold_endpoint = "";
9413+ if(localflag)
93819414 {
9382- msgbox("Failed to connect to Custom KoboldAI Endpoint!<br><br>Please check if KoboldAI is running at the url: " + desiredkoboldendpoint + "<br><br>You can also <a href='#' class='color_blueurl' onclick='hide_popups();display_endpoint_container();'>try a different URL or API type</a>.","Error Encountered",true);
9383- selected_models = [];
9384- selected_workers = [];
9385- custom_kobold_endpoint = "";
9386- if(localflag)
9387- {
9388- document.getElementById("connectstatus").innerHTML = "Offline Mode";
9389- }
9390- render_gametext();
9415+ document.getElementById("connectstatus").innerHTML = "Offline Mode";
9416+ }else{
9417+ document.getElementById("connectstatus").innerHTML = "Error";
93919418 }
9392- } else {
9393- uses_cors_proxy = true; //fallback to cors proxy, this will remain for rest of session
9394- connect_custom_endpoint(); //one more try
9419+
9420+ render_gametext();
93959421 }
9422+
93969423 });
93979424 }
93989425 }
@@ -9491,6 +9518,11 @@ initializeInstructUIFunctionality();
94919518 {
94929519 dismiss_endpoint_container();
94939520
9521+ if(desired_claude_ep.toLowerCase().includes("api.anthropic.com"))
9522+ {
9523+ document.getElementById("connectstatusproxied").classList.remove("hidden");
9524+ }
9525+
94949526 //good to go
94959527 custom_claude_endpoint = desired_claude_ep;
94969528 custom_claude_key = desired_claude_key;
@@ -9900,12 +9932,19 @@ initializeInstructUIFunctionality();
99009932 custom_palm_key = "";
99019933 custom_cohere_key = "";
99029934
9903- if (selected_idx_arr.length > 0) {
9904- let prep_sel_models = [];
9905- let prep_sel_workers = []; //if selected, pick a specific worker ids to use
9935+ let prep_sel_models = [];
9936+ let prep_sel_workers = []; //if selected, pick a specific worker ids to use
99069937
9907- let manualworker = (document.getElementById("manualworker").checked ? true : false);
9938+ let manualworker = (document.getElementById("manualworker").checked ? true : false);
99089939
9940+ if (selected_idx_arr.length == 0) { //select everything
9941+ manualworker = false;
9942+ for (let i = 0; i < models_data.length; ++i) {
9943+ prep_sel_models.push(models_data[i]);
9944+ }
9945+ }
9946+ else
9947+ {
99099948 for (var i = 0; i < selected_idx_arr.length; ++i) {
99109949 if (manualworker) //we are looping through selected workers
99119950 {
@@ -9925,24 +9964,24 @@ initializeInstructUIFunctionality();
99259964 prep_sel_models.push(addedmodel);
99269965 }
99279966 }
9967+ }
99289968
9929- //remove undefined and nulls
9930- prep_sel_models = prep_sel_models.filter(x=>x);
9931- prep_sel_workers = prep_sel_workers.filter(x=>x);
9969+ //remove undefined and nulls
9970+ prep_sel_models = prep_sel_models.filter(x=>x);
9971+ prep_sel_workers = prep_sel_workers.filter(x=>x);
99329972
9933- selected_models = prep_sel_models;
9934- selected_workers = prep_sel_workers;
9935- localsettings.my_api_key = document.getElementById("apikey").value;
9936- if(localsettings.my_api_key==null || localsettings.my_api_key=="")
9937- {
9938- localsettings.my_api_key = defaultsettings.my_api_key;
9939- }
9973+ selected_models = prep_sel_models;
9974+ selected_workers = prep_sel_workers;
9975+ localsettings.my_api_key = document.getElementById("apikey").value;
9976+ if(localsettings.my_api_key==null || localsettings.my_api_key=="")
9977+ {
9978+ localsettings.my_api_key = defaultsettings.my_api_key;
9979+ }
99409980
9941- document.getElementById("connectstatus").innerHTML = "AI Horde";
9981+ render_gametext();
9982+ hide_popups();
99429983
9943- render_gametext();
9944- hide_popups();
9945- }
9984+ document.getElementById("connectstatus").innerHTML = "AI Horde";
99469985 }
99479986
99489987 function delete_my_worker(index)
@@ -19062,6 +19101,7 @@ initializeInstructUIFunctionality();
1906219101 <div id="connectstatusdiv">
1906319102 <div id="connectstatus">Connecting</div>
1906419103 <div class="hidden" style="font-size: 12px;" id="connectstatusmultiplayer"></div>
19104+ <div class="hidden color_orange" style="font-size: 12px;" id="connectstatusproxied">(Proxied)</div>
1906519105 </div>
1906619106 </div>
1906719107
@@ -19591,7 +19631,7 @@ initializeInstructUIFunctionality();
1959119631 </span>
1959219632 </div>
1959319633 <div class="popupfooter">
19594- <button type="button" class="btn btn-primary" onclick="connect_custom_endpoint()">Ok</button>
19634+ <button type="button" class="btn btn-primary" onclick="clear_cors_proxy_flag(); connect_custom_endpoint()">Ok</button>
1959519635 <button type="button" class="btn btn-primary" onclick="dismiss_endpoint_container()">Cancel</button>
1959619636 </div>
1959719637 </div>
0 commit comments