diff --git a/aiserver.py b/aiserver.py
index bb79fe99..aa2c0227 100644
--- a/aiserver.py
+++ b/aiserver.py
@@ -10195,13 +10195,13 @@ def UI_2_action_image():
#==================================================================#
# display messages if they have never been sent before on this install
#==================================================================#
+with open("data/one_time_messages.json", "r") as f:
+ messages = json.load(f)
+ messages = {int(x): messages[x] for x in messages}
@logger.catch
@socketio.on("check_messages")
def send_one_time_messages(data, wait_time=0):
time.sleep(wait_time) #Need to wait a bit for the web page to load as the connect event is very eary
- messages = {
- 1: {"id": 1, "title": "Warning New Save Format", "message": "This version of KoboldAI introduces a new save format which is incompatible with older versions of KoboldAI, this means your saves will not be able to load on the old version if they are saved with this version. For existing stories we will leave a copy of the original save intact if you wish to switch back to the older version, when you load your save in the old version of KoboldAI you will not see any of the changes saved with this version."},
- }
if data != '':
if int(data) not in koboldai_vars.seen_messages:
koboldai_vars.seen_messages.append(int(data))
diff --git a/data/one_time_messages.json b/data/one_time_messages.json
new file mode 100644
index 00000000..3062827b
--- /dev/null
+++ b/data/one_time_messages.json
@@ -0,0 +1,12 @@
+{
+ "1": {
+ "id": 1,
+ "title": "Warning New Save Format",
+ "message": "This version of KoboldAI introduces a new save format which is incompatible with older versions of KoboldAI, this means your saves will not be able to load on the old version if they are saved with this version. For existing stories we will leave a copy of the original save intact if you wish to switch back to the older version, when you load your save in the old version of KoboldAI you will not see any of the changes saved with this version."
+ },
+ "2": {
+ "id": 2,
+ "title": "Changes since last version",
+ "message": "
New Features
\nPhrase Biasing
\nThere is now a Phrase Biasing implementation under Settings -> Biasing. You can now encourage or discourage the AI to generate words or phrases (without needing to use a userscript)\nContext viewer
\nThe Context Viewer allows you to see what is sent to the AI. Given that only so much text can be read by the AI at a time, it's useful to know exactly what it's looking at.\nStory Commentary
\nStory Commentary allows custom characters to speak their mind on your story. This can be configured under Settings -> Story Commentary. Characters can be added as World Into entries with a type of \"Commentator\".\nNew Chat UI (Experimental)
\nThis new interface for Chat Mode is a more visually \"chat like\" in comparison to the old text-based mode. To activate it, ensure both Chat Mode (Home -> Game Mode) and Experimental UI (Interface -> Experimental UI) are enabled, then change the Chat Style (Interface -> Chat Style) to \"Messages\". Similarly, to the story commentators, characters can be defined in the World Info menu; if a character's name matches a chat character defined in the World Info menu, the image on the character entry will be used as an icon. \nTweaks
\nTweaks allow small UI changes to be mixed and matched to create a more personalized interface.\nAttention Bias (Experimental)
\nAttention Bias hopes to cause some parts of the context to be internally weighed more than others in self attention. This is very experimental, and only works on OPT-based models for now.\nGenre
\nThe genre menu (Author's Note -> Genre) prepends genre information to the context. You can either choose from preset genres or write your own. Works better on models trained with genre/tag information, including most new models in the model picker.\nWorld Info generation
\nWorld Info entries can now have their text generated automatically from a title and type. Powered by whatever model you have active, so effectiveness will vary with model.\nDrag and drop import
\nImportable files can now be dragged into the UI to load them.\nNovelAI lorebook/card support
\nNovelAI lorebooks and cards can now be imported as World Info. If a card is uploaded, the PNG will be used as the World Info image.\nFinder (Ctrl+K)
\nAllows jumping to various UI elements and performing actions quickly. Mode can be adjusted by pressing the clicking the mode icon or with hotkeys on an empty search box (Search: '#', World Info: '>', Inference Scratchpad: '!', Image Prompting: '?').\nClub import wizard
\nPrompts imported from aetherroom.club with placeholders will now show a setup prompt where you can input the value of these placeholders.\nContext menu
\nA context menu has been added and is available in several areas. Give it a try by right-clicking on the main text area.\nSubstitutions
\nSubstitutions allow phrases to be replaced if you or the AI input them into the story. The default Substitutions are disabled and can be enabled with the pencil icon to the right of the entry.\nInference scratchpad
\nThe Inference Scratchpad is a way of prompting the AI outside in isolation; the AI will not see anything in your story, and nothing the AI responds with will be added to the story. This can be useful in scenarios where you wish to use the AI in a more generic way. For example, you could prompt it with something like \"List of fantasy names:\" to receive such a list.\nError notifications
\nErrors are generally less opaque to the user. Client sided errors and many server errors will show a notification detailing the error.\nCtrl+Click to jump to World Info entry
\nHolding Ctrl while clicking on a mention of a World Info tag will bring you to the entry.\nModel picker indicators
\nThe model picker now has indicators showing if a model is downloaded, may achieve poor quality, or may not load on your system.\nMore shortcuts
\nPress Ctrl+? to view them.\nImage Generation
\nYou can now generate flavor images based on the game text at each action. In the settings menu in the home tab, you can click generate image to create an image based on the current text. It will appear below the image. Hovering on the image will give you the prompt used to generate the image. You can click on the text of previous actions to see the image associated with that action and can right click on the image and hit retry to generate a new image based on that action.\nSettings for how/where the image is generated are in the left flyout menu under interface, image\nText to speech (Experimental)
\nText to speech is now available. To enable it go to the settings menu, enable experimental ui, then enable generate audio. Audio will be generated for your actions. Play buttons will appear next to the submit button, and right clicking an action will give you a new speak option to start reading from that point.\nUI Mode\nIn response to feedback, we've added different UI mode levels from simple to power user. Advanced hides some of the less used options, while Power User shows everything. Simple is very much a work in progress, but it intends to simplify the majority of settings to 3 sliders. Feel free to play with it but don't expect good results yet.\nPresets
\nPresets are now here. Community presets are pre-loaded in KoboldAI and can be selected from the settings tab in the settings menu, or from the home screen. In addition, you can save your own presets and share them with others (or send them to use for future inclusion). Presets are saved in the presets folder\nAlt Text Gen
\nWith this setting on the system will insert world info text the sentence before the word that triggers it in the AI text. This should make the AI pay more attention to it and make it more likely to influence the output.\nAlt Multi Gen
\nIf set multiple generations will be generated sequentially rather than at once. This reduces the amount of VRAM required and can let you generate multiple story options with more demanding models at the potential expense of speed\nBeep on Complete
\nThere is now an option in the settings menu, interface tab called been on complete. If set the browser will beep when generation is complete. Useful for slow systems\nPrivacy Screen (Experimental)
\nBy hitting ctrl+L the screen will be blurred for all users until the password is entered and unlock is clicked (password is set in the settings menu, interface tab.\nChange Game Text Size
\nGame text can be adjusted to any size\nNo double spaces
\nWhen set double spaces will be replaced by single spaces\nThemes
\nWe now have a theming engine. Themes can come in 3 flavors. Palette themes use a more basic theming system entirely in the UI. Select the colors from the Palette section and things will change. Advanced themes can have various variables set manually (click the advanced theme button to see). These allow you to go a level deeper than the palette system. Finally, we have custom themes. These are custom CSS code that can do almost anything. All themes can be saved and shared. Saved themes are stored in the themes folder\nAuto Memory (Experimental)
\nThe start of auto-memory is in place and we are looking for feedback. It currently generates the summary but does not put it in memory (though you can copy-paste it). To see it, turn on experimental ui, go to the story menu, memory tab and click generate under auto-memory. \nGeneral Notes
\nIf you want a place to write stuff down that saves with the story but doesn't affect it, that's what the notes tab is for. It is found under the story menu, Notes tab\nW++ (or SBF)
\nIn world info entries you can turn on w++ mode. This will allow you to enter data in the W++ format without having to actually write it.\nWorld Info Titles
\nWorld info entries now have titles on them to make it easier to find the one you want. Soon the world info entries will be collapsed to just the title to make navigation easier\nDownload/Upload world info folders
\nWorld info folders can now be downloaded and/or uploaded. This will let you share world info easier.\nGame Text in AI Context
\nGame text that will be in the AI's context is now bold in the game screen. This will let you easily see where the AI will stop remembering your game (anything not bolded is \"forgotten\")\nWorld info context\nText that triggers a world info entry will now be italicized. Hovering over that text will cause a tooltip to show what the AI text is that will be added.\nUpdated help text
\nHelp text has been expanded throughout the UI.\nContext Bar
at the bottom of the story menu is a bar that shows how much of the AI's context is in use, and by what. Different colors correspond to different data types (actions, memory, world info, etc)\n
\n
\nImprovements
\nAuthor's Note
\nThe author's note is now inserted between sentences a configurable distance from the end of the story. This should improve the coherence of generated text while keeping the author's note relevant."
+ }
+}
\ No newline at end of file
diff --git a/static/koboldai.css b/static/koboldai.css
index 8dcd20fd..e384bc6b 100644
--- a/static/koboldai.css
+++ b/static/koboldai.css
@@ -3026,6 +3026,7 @@ button.disabled {
.console_text {
white-space: pre-wrap;
display: inline-block;
+ margin-left: 5px;
}
.text_red {