2021-05-03 00:51:04 +02:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< title > KoboldAI Client< / title >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
2021-12-30 21:27:48 +01:00
< link rel = "stylesheet" href = "static/jquery-ui.sortable.min.css" >
< link rel = "stylesheet" href = "static/bootstrap.min.css" >
< link rel = "stylesheet" href = "static/bootstrap-toggle.min.css" >
< link rel = "stylesheet" href = "static/open-iconic-bootstrap.min.css" >
2022-01-23 01:06:52 +01:00
< link rel = "stylesheet" href = "static/custom.css?ver=1.17" >
2021-12-30 21:27:48 +01:00
2021-05-31 16:30:40 +02:00
< script src = "static/jquery-3.6.0.min.js" > < / script >
2021-12-05 05:59:28 +01:00
< script src = "static/jquery-ui.sortable.min.js" > < / script >
2021-05-03 00:51:04 +02:00
< script src = "static/socket.io.min.js" > < / script >
2021-05-31 16:30:40 +02:00
< script src = "static/bootstrap.min.js" > < / script >
2021-05-11 01:17:10 +02:00
< script src = "static/bootstrap-toggle.min.js" > < / script >
2021-09-27 19:11:15 +02:00
< script src = "static/rangy-core.min.js" > < / script >
2022-03-01 01:00:26 +01:00
< script src = "static/application.js?ver=1.17a" > < / script >
2021-05-03 00:51:04 +02:00
< / head >
< body >
2021-11-05 00:33:17 +01:00
< input type = "file" id = "remote-save-select" accept = "application/json" style = "display:none" >
2021-05-03 00:51:04 +02:00
< div class = "container" >
< div class = "row" id = "topmenu" >
< div id = "menuitems" >
2021-05-17 06:42:47 +02:00
< div class = "navcontainer" >
< nav class = "navbar" id = "navbar" >
< button class = "navbar-toggler" type = "button" data-toggle = "collapse" data-target = "#navbarNavDropdown" >
< span class = "navbar-button-bar" > < / span >
< span class = "navbar-button-bar" > < / span >
< span class = "navbar-button-bar" > < / span >
< / button >
2021-05-16 11:29:39 +02:00
< div class = "collapse navbar-collapse" id = "navbarNavDropdown" >
< ul class = "nav navbar-nav" >
2022-03-07 01:51:35 +01:00
< li class = "nav-item dropdown" >
< a class = "nav-link dropdown-toggle" href = "#" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" > AI< / a >
< div class = "dropdown-menu" >
< a class = "dropdown-item" href = "#" id = "btn_loadmodel" > Load Model< / a >
< / div >
< / li >
2021-08-19 12:54:44 +02:00
< li class = "nav-item dropdown" >
< a class = "nav-link dropdown-toggle" href = "#" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" > New Game< / a >
< div class = "dropdown-menu" >
< a class = "dropdown-item" href = "#" id = "btn_newgame" > Blank Story< / a >
< a class = "dropdown-item" href = "#" id = "btn_rndgame" > Random Story< / a >
< / div >
2021-05-16 11:29:39 +02:00
< / li >
2021-12-30 07:44:35 +01:00
< li class = "nav-item dropdown always-available" >
< a class = "nav-link dropdown-toggle always-available" href = "#" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" > Save< / a >
2021-05-22 11:28:40 +02:00
< div class = "dropdown-menu" >
< a class = "dropdown-item" href = "#" id = "btn_save" > Save< / a >
< a class = "dropdown-item" href = "#" id = "btn_saveas" > Save As< / a >
< a class = "dropdown-item" href = "#" id = "btn_savetofile" > Save To File...< / a >
2021-12-30 07:44:35 +01:00
< a class = "dropdown-item always-available" href = "#" id = "btn_download" > Download Story as JSON< / a >
2021-12-30 22:37:48 +01:00
< a class = "dropdown-item" href = "#" id = "btn_downloadtxt" > Download Story as Plaintext< / a >
2021-05-22 11:28:40 +02:00
< / div >
2021-05-16 11:29:39 +02:00
< / li >
2021-05-22 11:28:40 +02:00
< li class = "nav-item dropdown" >
< a class = "nav-link dropdown-toggle" href = "#" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" > Load< / a >
< div class = "dropdown-menu" >
< a class = "dropdown-item" href = "#" id = "btn_load" > Load< / a >
< a class = "dropdown-item" href = "#" id = "btn_loadfromfile" > Load From File...< / a >
< / div >
2021-05-16 11:29:39 +02:00
< / li >
< li class = "nav-item dropdown" >
2021-05-22 11:28:40 +02:00
< a class = "nav-link dropdown-toggle" href = "#" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" > Import< / a >
2021-05-16 11:29:39 +02:00
< div class = "dropdown-menu" >
< a class = "dropdown-item" href = "#" id = "btn_import" > AI Dungeon Adventure< / a >
2021-05-29 11:46:03 +02:00
< a class = "dropdown-item" href = "#" id = "btn_importwi" > AI Dungeon World Info< / a >
2021-05-16 11:29:39 +02:00
< a class = "dropdown-item" href = "#" id = "btn_impaidg" > aidg.club Prompt< / a >
< / div >
< / li >
< li class = "nav-item" >
< a class = "nav-link" href = "#" id = "btn_settings" > Settings< / a >
< / li >
< li class = "nav-item" >
< a class = "nav-link" href = "#" id = "btn_format" > Formatting< / a >
< / li >
2021-12-13 07:03:26 +01:00
< li class = "nav-item" >
< a class = "nav-link" href = "#" id = "btn_userscripts" > Userscripts< / a >
< / li >
2021-10-22 20:18:10 +02:00
< li class = "nav-item" >
< a class = "nav-link hidden" href = "#" id = "btn_softprompt" > Soft Prompt< / a >
< / li >
2021-05-16 11:29:39 +02:00
< / ul >
< / div >
< / nav >
2021-05-03 00:51:04 +02:00
< / div >
2021-12-23 05:33:27 +01:00
< div id = "connectstatusdiv" class = "flex-row-container" >
< span id = "connectstatus" class = "color_orange flex-row" > Waiting for connection...< / span >
< div class = "layer-container status-container flex-push-right" >
< span class = "oi oi-puzzle-piece statusicon layer-bottom" aria-hidden = "true" >
< div class = "statustext statustext-wide" >
< div id = "stat-us" class = "statusheader" > No userscripts active< / div >
< div id = "stat-usactive" > < / div >
< / div >
< / span >
< div class = "layer-top statusiconlabel" id = "usiconlabel" > < / div >
< / div >
< span class = "oi oi-lightbulb statusicon" aria-hidden = "true" >
< div class = "statustext" >
< div id = "stat-sp" class = "statusheader" > No soft prompt active< / div >
< div id = "stat-spactive" > < / div >
< / div >
< / span >
2021-05-03 00:51:04 +02:00
< / div >
< / div >
< / div >
2021-05-29 11:46:03 +02:00
< div class = "row" id = "settingsmenu" style = "display:none;" >
2021-05-04 15:56:48 +02:00
< / div >
2021-05-11 01:17:10 +02:00
< div class = "row" id = "formatmenu" >
< / div >
2021-08-23 08:34:27 +02:00
< div class = "layer-container" >
< div class = "layer-bottom row" id = "gamescreen" >
2021-09-27 19:11:15 +02:00
< span id = "gametext" contenteditable = "true" > < p > ...< / p > < / span >
2021-08-23 08:34:27 +02:00
< div class = "hidden" id = "wimenu" >
< / div >
2021-05-13 07:26:42 +02:00
< / div >
2021-08-23 08:34:27 +02:00
< div id = "curtain" class = "layer-top row hidden" > < / div >
2021-05-03 00:51:04 +02:00
< / div >
2021-05-29 11:46:03 +02:00
< div class = "row" id = "seqselmenu" >
< div class = "seqselheader" > Select sequence to keep:< / div >
< div id = "seqselcontents" >
< / div >
< / div >
2021-08-23 08:34:27 +02:00
< div class = "row flex" id = "actionmenu" >
2021-05-03 00:51:04 +02:00
< div id = "actionmenuitems" >
2021-08-23 08:34:27 +02:00
< button type = "button" class = "btn btn-primary" id = "btn_actmem" > Memory< / button >
< button type = "button" class = "btn btn-primary" id = "btn_actwi" > W Info< / button >
< button type = "button" class = "btn btn-primary" id = "btn_actundo" > Back< / button >
2022-01-21 21:30:37 +01:00
< button type = "button" class = "btn btn-primary" id = "btn_actredo" > Redo< / button >
2021-08-23 08:34:27 +02:00
< button type = "button" class = "btn btn-primary" id = "btn_actretry" > Retry< / button >
< / div >
2021-12-27 04:21:58 +01:00
< input type = "text" id = "chatname" class = "form-control hidden" placeholder = "Chat name" >
2021-08-23 08:34:27 +02:00
< div id = "messagefield" > < / div >
< div class = "box flex-push-right" >
< input type = "checkbox" data-toggle = "toggle" data-onstyle = "success" id = "allowediting" disabled >
< div class = "box-label" > Allow Editing< / div >
2021-05-03 00:51:04 +02:00
< / div >
< / div >
< div class = "row" >
< div id = "inputrow" >
2021-08-19 13:18:01 +02:00
< div id = "inputrowmode" >
< button type = "button" class = "btn btn-secondary hidden" id = "btnmode" > Mode:< br / > < b id = "btnmode_label" > Story< / b > < / button >
< / div >
2021-05-03 00:51:04 +02:00
< div id = "inputrowleft" >
< textarea class = "form-control" id = "input_text" placeholder = "Enter text here" > < / textarea >
< / div >
< div id = "inputrowright" >
< button type = "button" class = "btn btn-secondary" id = "btnsend" > Wait< / button >
< / div >
< / div >
2021-05-05 09:04:06 +02:00
< div id = "anoterowcontainer" >
< div id = "anoterow" >
< div id = "anoterowleft" >
2021-12-30 05:43:36 +01:00
< div class = "anotelabel no-padding" >
2021-05-05 09:04:06 +02:00
Author's Note
< / div >
< div class = "anotefield" >
2021-12-30 05:43:36 +01:00
< textarea class = "form-control" placeholder = "Author's Note" id = "anoteinput" > < / textarea >
2021-05-05 09:04:06 +02:00
< / div >
< / div >
< div id = "anoterowright" >
< div id = "anoteslidelabel" >
< div class = "justifyleft" >
Depth
< / div >
< div class = "justifyright" id = "anotecur" >
3
< / div >
< / div >
< div >
< input type = "range" class = "form-range airange" min = "1" max = "5" step = "1" id = "anotedepth" >
< / div >
< div class = "settingminmax" >
< div class = "justifyleft" >
1
< / div >
< div class = "justifyright" >
5
< / div >
< / div >
< / div >
< / div >
2021-12-30 05:43:36 +01:00
< div >
< div class = "anotelabel" >
Author's Note Template (the "< |> " will be replaced with the Author's Note text)
< / div >
< div class = "anotefield" >
< textarea class = "form-control" placeholder = "Author's Note Template" id = "anotetemplate" > < / textarea >
< / div >
< / div >
2021-05-05 09:04:06 +02:00
< / div >
2022-01-24 18:54:44 +01:00
< div class = "hidden" id = "debugcontainer" >
< textarea class = "form-control" placeholder = "Debug Info" id = "debuginfo" > < / textarea >
< / div >
2021-05-03 00:51:04 +02:00
< / div >
< / div >
2021-05-11 06:27:34 +02:00
< div class = "hidden" id = "popupcontainer" >
< div id = "popup" >
< div id = "popuptitlebar" >
< div id = "popuptitletext" > Select an Adventure to Import< / div >
< / div >
< div id = "popuplistheader" >
< div > Title< / div >
< div > # Actions< / div >
< div > Description< / div >
< / div >
< div id = "popupcontent" >
< / div >
< div id = "popupfooter" >
< button type = "button" class = "btn btn-primary" id = "btn_popupaccept" > Accept< / button >
< button type = "button" class = "btn btn-primary" id = "btn_popupclose" > Cancel< / button >
< / div >
< / div >
< / div >
2021-05-16 11:29:39 +02:00
< div class = "popupcontainer hidden" id = "aidgpopupcontainer" >
< div id = "aidgpopup" >
< div class = "popuptitlebar" >
< div class = "popuptitletext" > Enter the Prompt Number< / div >
< / div >
< div class = "aidgpopuplistheader" >
(4-digit number at the end of aidg.club URL)
< / div >
< div class = "aidgpopupcontent" >
< input class = "form-control" type = "text" placeholder = "Prompt Number" id = "aidgpromptnum" >
< / div >
< div class = "popupfooter" >
< button type = "button" class = "btn btn-primary" id = "btn_aidgpopupaccept" > Accept< / button >
< button type = "button" class = "btn btn-primary" id = "btn_aidgpopupclose" > Cancel< / button >
< / div >
< / div >
< / div >
2021-05-22 11:28:40 +02:00
< div class = "popupcontainer hidden" id = "saveascontainer" >
< div id = "saveaspopup" >
< div class = "popuptitlebar" >
< div class = "popuptitletext" > Enter Name For Save< / div >
< / div >
< div class = "aidgpopupcontent" >
2022-01-22 01:02:56 +01:00
< input class = "form-control" type = "text" placeholder = "Save Name" id = "savename" > < br >
< input type = "checkbox" data-toggle = "toggle" data-onstyle = "success" id = "savepins" checked >
< div class = "box-label" > Save Pin Information< / div >
2021-05-22 11:28:40 +02:00
< / div >
2021-09-01 18:58:01 +02:00
< div class = "popuperror hidden" >
< span > < / span >
< / div >
2021-09-01 00:22:30 +02:00
< div class = "saveasoverwrite hidden" >
2021-05-22 11:28:40 +02:00
< span > File already exists. Really overwrite?< / span >
< / div >
< div class = "popupfooter" >
< button type = "button" class = "btn btn-primary" id = "btn_saveasaccept" > Accept< / button >
< button type = "button" class = "btn btn-primary" id = "btn_saveasclose" > Cancel< / button >
< / div >
< / div >
< / div >
< div class = "popupcontainer hidden" id = "loadcontainer" >
< div id = "loadpopup" >
< div class = "popuptitlebar" >
< div class = "popuptitletext" > Select A Story To Load< / div >
< / div >
< div class = "loadlistheader" >
< div > Save Name< / div >
2021-09-01 00:22:30 +02:00
< div class = "flex-push-right" > # Actions< / div >
2021-05-22 11:28:40 +02:00
< / div >
< div id = "loadlistcontent" >
< / div >
< div class = "popupfooter" >
< button type = "button" class = "btn btn-primary" id = "btn_loadaccept" > Load< / button >
< button type = "button" class = "btn btn-primary" id = "btn_loadclose" > Cancel< / button >
< / div >
< / div >
< / div >
2022-03-07 01:51:35 +01:00
< div class = "popupcontainer hidden" id = "loadmodelcontainer" >
< div id = "loadpopup" >
< div class = "popuptitlebar" >
< div class = "popuptitletext" > Select A Model To Load< / div >
< / div >
< div class = "loadmodellistheader" >
< div > Model< / div >
< / div >
< div id = "loadmodellistcontent" >
< / div >
< div class = "popupfooter" >
< input class = "form-control hidden" type = "text" placeholder = "key" id = "modelkey" > < br >
< / div >
< div class = "popupfooter" >
< button type = "button" class = "btn btn-primary" id = "btn_loadmodelaccept" > Load< / button >
< button type = "button" class = "btn btn-primary" id = "btn_loadmodelclose" > Cancel< / button >
< div class = "box flex-push-right hidden" id = use_gpu_div >
< input type = "checkbox" data-toggle = "toggle" data-onstyle = "success" id = "use_gpu" checked >
< div class = "box-label" > Use GPU< / div >
< / div >
< / div >
< / div >
< / div >
2021-10-22 20:18:10 +02:00
< div class = "popupcontainer hidden" id = "spcontainer" >
< div id = "sppopup" >
< div class = "popuptitlebar" >
< div class = "popuptitletext" > Select A Soft Prompt To Use< / div >
< / div >
< div id = "splistcontent" >
< / div >
< div class = "popupfooter" >
< button type = "button" class = "btn btn-primary" id = "btn_spaccept" > Load< / button >
< button type = "button" class = "btn btn-primary" id = "btn_spclose" > Cancel< / button >
< / div >
< / div >
< / div >
2021-12-13 07:03:26 +01:00
< div class = "popupcontainer hidden" id = "uscontainer" >
< div id = "uspopup" >
< div class = "popuptitlebar" >
< div class = "popuptitletext" > Select userscripts to load; drag-and-drop to reorder< / div >
< / div >
2021-12-13 18:45:52 +01:00
< div class = "usheadergrid" >
< div > [AVAILABLE]< / div >
< div > [ACTIVE]< / div >
< / div >
2021-12-13 07:03:26 +01:00
< div class = "uslistgrid" >
< div id = "uslistunloaded" >
< / div >
< div id = "uslistloaded" >
< / div >
< / div >
< div class = "popupfooter" >
< button type = "button" class = "btn btn-primary" id = "btn_usaccept" > Load< / button >
< button type = "button" class = "btn btn-primary" id = "btn_usclose" > Cancel< / button >
< / div >
< / div >
< / div >
2021-09-01 00:22:30 +02:00
< div class = "popupcontainer hidden" id = "loadcontainerdelete" >
< div id = "loadpopupdelete" >
< div class = "popuptitlebar" >
< div class = "popuptitletext" > Really Delete Story?< / div >
< / div >
< div class = "dialogheader" >
"< span id = "loadcontainerdelete-storyname" > < / span > " will be PERMANENTLY deleted! You will not be able to recover this story later.
< / div >
< div class = "popuperror hidden" >
< span > < / span >
< / div >
< div class = "popupfooter" >
< button type = "button" class = "btn btn-danger" id = "btn_dsaccept" > Delete< / button >
< button type = "button" class = "btn btn-primary" id = "btn_dsclose" > Cancel< / button >
< / div >
< / div >
< / div >
< div class = "popupcontainer hidden" id = "loadcontainerrename" >
< div id = "loadpopuprename" >
< div class = "popuptitlebar" >
< div class = "popuptitletext" > Enter New Name For Story< / div >
< / div >
< div class = "dialogheader" >
What should the story "< span id = "loadcontainerrename-storyname" > < / span > " be renamed to?
< input class = "form-control" type = "text" placeholder = "New Save Name" id = "newsavename" >
< / div >
< div class = "popuperror hidden" >
< span > < / span >
< / div >
< div class = "saveasoverwrite hidden" >
< span > File already exists. Really overwrite?< / span >
< / div >
< div class = "popupfooter" >
< button type = "button" class = "btn btn-primary" id = "btn_rensaccept" > Accept< / button >
< button type = "button" class = "btn btn-primary" id = "btn_rensclose" > Cancel< / button >
< / div >
< / div >
< / div >
2021-05-22 11:28:40 +02:00
< div class = "popupcontainer hidden" id = "newgamecontainer" >
< div id = "nspopup" >
< div class = "popuptitlebar" >
< div class = "popuptitletext" > Really Start A New Story?< / div >
< / div >
< div class = "aidgpopuplistheader" >
Unsaved data will be lost.
< / div >
< div class = "popupfooter" >
< button type = "button" class = "btn btn-primary" id = "btn_nsaccept" > Accept< / button >
< button type = "button" class = "btn btn-primary" id = "btn_nsclose" > Cancel< / button >
< / div >
< / div >
< / div >
2021-08-19 12:54:44 +02:00
< div class = "popupcontainer hidden" id = "rndgamecontainer" >
< div id = "rspopup" >
< div class = "popuptitlebar" >
< div class = "popuptitletext" > Really Start A Random Story?< / div >
< / div >
< div class = "aidgpopuplistheader" >
< br >
Story quality and topic depends on the model and your settings/suggestion (Around 0.5 temp is recommended).< br >
2022-02-01 11:15:44 +01:00
This feature works best with heavily themed models like the Adventure model and can also be influenced with softprompts .< br >
2021-08-19 12:54:44 +02:00
If you get random spam then your model is not capable of using this feature and if you get unrelated stories it does not understand the topic.< br >
2022-02-01 11:15:44 +01:00
Generated results are unfiltered and can be offensive or unsuitable for children, the AI can make connections the model/softprompt creator did not intend.< br > < br >
2021-08-19 12:54:44 +02:00
Unsaved data will be lost.< br > < br >
Below you can input a genre suggestion for the AI to loosely base the story on (For example Horror or Cowboy).< br >
< / div >
2021-08-25 00:32:48 +02:00
< div class = "aidgpopupcontent" >
2021-08-19 12:54:44 +02:00
< input class = "form-control" type = "text" placeholder = "Story Genre Suggestion (Leave blank for fully random)" id = "topic" >
< / div >
2021-12-30 05:15:59 +01:00
< div class = "aidgpopupcontent" >
< textarea class = "form-control" placeholder = "Memory" id = "rngmemory" > < / textarea >
< / div >
2021-08-19 12:54:44 +02:00
< div class = "popupfooter" >
< button type = "button" class = "btn btn-primary" id = "btn_rsaccept" > Accept< / button >
< button type = "button" class = "btn btn-primary" id = "btn_rsclose" > Cancel< / button >
< / div >
< / div >
< / div >
2021-05-03 00:51:04 +02:00
< / body >
2021-08-19 12:54:44 +02:00
< / html >