mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
New onboarding experience
This commit is contained in:
@ -39,6 +39,7 @@ code {
|
||||
padding: 5px;
|
||||
border-radius: 5px;
|
||||
display: block;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
a {
|
||||
@ -55,3 +56,18 @@ h3 {
|
||||
hr {
|
||||
border: 1px solid #999;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table,
|
||||
th,
|
||||
td {
|
||||
border: 1px solid;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table img {
|
||||
max-width: 200px;
|
||||
}
|
24
public/notes/faq.md.html
Normal file
24
public/notes/faq.md.html
Normal file
@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>SillyTavern FAQ</title>
|
||||
<link rel="stylesheet" href="/css/notes.css">
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link href="/webfonts/NotoSans/stylesheet.css" rel="stylesheet">
|
||||
<script src="/scripts/showdown.min.js"></script>
|
||||
<script src="/scripts/showdown-toc.min.js"></script>
|
||||
<script src="/scripts/notes.js"></script>
|
||||
</head>
|
||||
|
||||
<body onload="loadNotes('/get_faq')">
|
||||
<div id="main">
|
||||
<div id="content">
|
||||
<!-- To change the guidebook content edit the content.md file -->
|
||||
<!-- Then it will be dynamically inserted here -->
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -9,22 +9,10 @@
|
||||
<link href="/webfonts/NotoSans/stylesheet.css" rel="stylesheet">
|
||||
<script src="/scripts/showdown.min.js"></script>
|
||||
<script src="/scripts/showdown-toc.min.js"></script>
|
||||
<script type="module">
|
||||
const toc = [];
|
||||
let hash = location.hash;
|
||||
let converter = new showdown.Converter({ extensions: [showdownToc({ toc })] } );
|
||||
let text = await (await fetch('/notes/content.md')).text();
|
||||
let content = document.getElementById('content');
|
||||
content.innerHTML = converter.makeHtml(text);
|
||||
const link = document.createElement('a');
|
||||
link.href = hash;
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
</script>
|
||||
<script src="/scripts/notes.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body onload="loadNotes('/notes/content.md')">
|
||||
<div id="main">
|
||||
<div id="content">
|
||||
<!-- To change the guidebook content edit the content.md file -->
|
||||
|
24
public/notes/readme.md.html
Normal file
24
public/notes/readme.md.html
Normal file
@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>SillyTavern Guidebook</title>
|
||||
<link rel="stylesheet" href="/css/notes.css">
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link href="/webfonts/NotoSans/stylesheet.css" rel="stylesheet">
|
||||
<script src="/scripts/showdown.min.js"></script>
|
||||
<script src="/scripts/showdown-toc.min.js"></script>
|
||||
<script src="/scripts/notes.js"></script>
|
||||
</head>
|
||||
|
||||
<body onload="loadNotes('/get_readme')">
|
||||
<div id="main">
|
||||
<div id="content">
|
||||
<!-- To change the guidebook content edit the content.md file -->
|
||||
<!-- Then it will be dynamically inserted here -->
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -251,15 +251,35 @@ const system_messages = {
|
||||
is_user: false,
|
||||
is_name: true,
|
||||
mes: [
|
||||
'Welcome to SillyTavern! In order to begin chatting:',
|
||||
'<h2>Welcome to SillyTavern!</h2>',
|
||||
'<h3>In order to begin chatting:</h3>',
|
||||
'<ol>',
|
||||
'<li>Connect to one of the supported generation APIs (the plug icon)</li>',
|
||||
'<li>Create or pick a character from the list (the top-right namecard icon)</li>',
|
||||
'</ol>',
|
||||
"<h4>Running on Colab and can't get an answer from the AI or getting Out of Memory errors?</h4>",
|
||||
"<h3>Running on Colab and can't get an answer from the AI or getting Out of Memory errors?</h3>",
|
||||
'Set a lower Context Size in AI generation settings (leftmost icon).<br>Values in range of 1400-1600 Tokens would be the safest choice.',
|
||||
'<h4>Still have questions left?</h4>',
|
||||
'Check out built-in help or type <tt>/?</tt> in any chat.'
|
||||
'<h3>Where to download more characters?</h3>',
|
||||
'<ol>',
|
||||
'<li><a target="_blank" href="https://discord.gg/pygmalionai">Pygmalion AI Discord</a></li>',
|
||||
'<li><a target="_blank" href="https://www.characterhub.org/">CharacterHub (NSFW)</a></li>',
|
||||
'<li><a target="_blank" href="https://arca.live/b/characterai?category=%EC%9E%90%EC%9E%91%EB%B4%87">Arca.live (Korean)</a></li>',
|
||||
'<li><a target="_blank" href="https://botprompts.net/">Botprompts.net</a></li>',
|
||||
'</ol>',
|
||||
'<h3>Where can I get help?</h3>',
|
||||
'Before going any further, check out the following resources:',
|
||||
'<ol>',
|
||||
'<li><a target="_blank" href="/notes/readme.md">Introduction to SillyTavern</a></li>',
|
||||
'<li><a target="_blank" href="/notes/faq.md">SillyTavern FAQ</a></li>',
|
||||
'<li><a target="_blank" href="/notes">SillyTavern Guidebook</a></li>',
|
||||
'<li><a target="_blank" href="https://github.com/Cohee1207/TavernAI-extras/blob/main/README.md">Extras API Docs</a></li>',
|
||||
'<li><a target="_blank" href="https://docs.alpindale.dev/">Pygmalion AI Docs</a></li>',
|
||||
'</ol>',
|
||||
'Type <tt>/?</tt> in any chat to get help on message formatting commands.',
|
||||
'<h3>Still have questions or suggestions left?</h3>',
|
||||
'<a target="_blank" href="https://github.com/Cohee1207/SillyTavern/issues">Post a GitHub issue.</a>',
|
||||
'<br/>',
|
||||
'<a target="_blank" href="https://github.com/Cohee1207/SillyTavern#questions-or-suggestions">Contact the developers.</a>'
|
||||
].join('')
|
||||
},
|
||||
group: {
|
||||
|
18
public/scripts/notes.js
Normal file
18
public/scripts/notes.js
Normal file
@ -0,0 +1,18 @@
|
||||
async function loadNotes(file) {
|
||||
const toc = [];
|
||||
let hash = location.hash;
|
||||
let converter = new showdown.Converter({ tables: true, extensions: [showdownToc({ toc })] } );
|
||||
let text = await (await fetch(file)).text();
|
||||
let content = document.getElementById('content');
|
||||
content.innerHTML = converter.makeHtml(text);
|
||||
|
||||
if (hash) {
|
||||
const link = document.createElement('a');
|
||||
link.href = hash;
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
}
|
||||
}
|
||||
|
||||
window.loadNotes = loadNotes;
|
@ -267,6 +267,12 @@ app.get("/", function (request, response) {
|
||||
app.get("/notes/*", function (request, response) {
|
||||
response.sendFile(__dirname + "/public" + request.url + ".html");
|
||||
});
|
||||
app.get('/get_faq', function(_, response) {
|
||||
response.sendFile(__dirname + "/faq.md");
|
||||
});
|
||||
app.get('/get_readme', function(_, response) {
|
||||
response.sendFile(__dirname + "/readme.md");
|
||||
});
|
||||
|
||||
//**************Kobold api
|
||||
app.post("/generate", jsonParser, async function (request, response_generate = response) {
|
||||
|
Reference in New Issue
Block a user