Skip to content

Commit

Permalink
Merge branch 'kwaroran:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
bangonicdd2 authored Feb 7, 2024
2 parents 6965b92 + 1e900d4 commit f6ba77f
Show file tree
Hide file tree
Showing 13 changed files with 165 additions and 110 deletions.
2 changes: 1 addition & 1 deletion src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
},
"package": {
"productName": "RisuAI",
"version": "1.77.0"
"version": "1.78.2"
},
"tauri": {
"allowlist": {
Expand Down
20 changes: 13 additions & 7 deletions src/etc/patchNote.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
export const patchNote = {
version: "1.77",
version: "1.78",
content:
`
# Update 1.77
- Added Risu RCC export
- Added password protection
- Added license for file export
- Added memory limit border thickness (#286)
- Minor fixes
# Update 1.78
- Added Modules
- Modules are package of triggers, regex, and lorebook
- You can enable globally, or enable only in specific chat
- Designed for easy sharing and activation/deactivation.
- Removed global regex and lorebook
- This would be replaced by modules
- Old global regex and lorebook will be converted to modules
- Fixed Claude prompting
- Settings menu would be remembered
- Added persona portraits (#289)
- Added gpt-3.5-turbo-0125 (#288)
`
}

Expand Down
1 change: 1 addition & 0 deletions src/lang/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -529,4 +529,5 @@ export const languageEnglish = {
edit: "Edit",
enableGlobal: "Enable Globally",
chatModulesInfo: "You can enable or disable modules for this chat.",
sideMenuRerollButton: "Side Menu Reroll Button",
}
7 changes: 7 additions & 0 deletions src/lib/ChatScreens/DefaultChatScreen.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,13 @@
<PackageIcon />
<span class="ml-2">{language.modules}</span>
</div>

{#if $DataBase.sideMenuRerollButton}
<div class="flex items-center cursor-pointer hover:text-green-500 transition-colors" on:click={reroll}>
<RefreshCcwIcon />
<span class="ml-2">{language.reroll}</span>
</div>
{/if}
</div>

{/if}
Expand Down
4 changes: 4 additions & 0 deletions src/lib/Setting/Pages/AccessibilitySettings.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,8 @@

<div class="flex items-center mt-2">
<Check bind:check={$DataBase.showMenuChatList} name={language.showMenuChatList}/>
</div>

<div class="flex items-center mt-2">
<Check bind:check={$DataBase.sideMenuRerollButton} name={language.sideMenuRerollButton}/>
</div>
8 changes: 4 additions & 4 deletions src/lib/Setting/Pages/Module/ModuleSettings.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import { DataBase } from "src/ts/storage/database";
import Button from "src/lib/UI/GUI/Button.svelte";
import ModuleMenu from "src/lib/Setting/Pages/Module/ModuleMenu.svelte";
import { exportModule, type RisuModule } from "src/ts/process/modules";
import { exportModule, importModule, type RisuModule } from "src/ts/process/modules";
import { DownloadIcon, Edit, TrashIcon, Globe } from "lucide-svelte";
import { v4 } from "uuid";
import { tooltip } from "src/ts/gui/tooltip";
Expand Down Expand Up @@ -87,15 +87,15 @@
}
mode = 1
}}>{language.createModule}</Button>
<Button className="mt-2">{language.importModule}</Button>
<Button className="mt-2" on:click={importModule}>{language.importModule}</Button>
{:else if mode === 1}
<h2 class="mb-2 text-2xl font-bold mt-2">{language.createModule}</h2>
<ModuleMenu bind:currentModule={tempModule}/>
{#if tempModule.name !== ''}
<Button className="mt-6" on:click={() => {
$DataBase.modules.push(tempModule)
mode = 0
}}>{language.editModule}</Button>
}}>{language.createModule}</Button>
{/if}
{:else if mode === 2}
<h2 class="mb-2 text-2xl font-bold mt-2">{language.editModule}</h2>
Expand All @@ -104,6 +104,6 @@
<Button className="mt-6" on:click={() => {
$DataBase.modules[editModuleIndex] = tempModule
mode = 0
}}>{language.createModule}</Button>
}}>{language.editModule}</Button>
{/if}
{/if}
18 changes: 0 additions & 18 deletions src/lib/Setting/Settings.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -88,24 +88,6 @@
<AccessibilityIcon />
<span>{language.accessibility}</span>
</button>
<button class="flex gap-2 items-center hover:text-textcolor"
class:text-textcolor={$SettingsMenuIndex === 8}
class:text-textcolor2={$SettingsMenuIndex !== 8}
on:click={() => {
$SettingsMenuIndex = 8
}}>
<BookIcon />
<span>{language.globalLoreBook}</span>
</button>
<button class="flex gap-2 items-center hover:text-textcolor"
class:text-textcolor={$SettingsMenuIndex === 9}
class:text-textcolor2={$SettingsMenuIndex !== 9}
on:click={() => {
$SettingsMenuIndex = 9
}}>
<AlignLeft />
<span>{language.globalRegexScript}</span>
</button>
<button class="flex gap-2 items-center hover:text-textcolor"
class:text-textcolor={$SettingsMenuIndex === 14}
class:text-textcolor2={$SettingsMenuIndex !== 14}
Expand Down
4 changes: 2 additions & 2 deletions src/ts/parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { calcString } from './process/infunctions';
import { findCharacterbyId } from './util';
import { getInlayImage } from './image';
import { autoMarkNew } from './plugins/automark';
import { getModuleLorebooks } from './process/modules';

const mconverted = new Marked({
gfm: true,
Expand Down Expand Up @@ -490,8 +491,7 @@ const matcher = (p1:string,matcherArg:matcherArg) => {
const chat = selchar.chats[selchar.chatPage]
const characterLore = (achara.type === 'group') ? [] : (achara.globalLore ?? [])
const chatLore = chat.localLore ?? []
const globalLore = db.loreBook[db.loreBookPage]?.data ?? []
const fullLore = characterLore.concat(chatLore.concat(globalLore))
const fullLore = characterLore.concat(chatLore.concat(getModuleLorebooks()))
return fullLore.map((f) => {
return JSON.stringify(f)
}).join("§\n")
Expand Down
107 changes: 48 additions & 59 deletions src/ts/process/lorebook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,7 @@ import { getModuleLorebooks } from "./modules";
export function addLorebook(type:number) {
let selectedID = get(selectedCharID)
let db = get(DataBase)
if(type === -1){
db.loreBook[db.loreBookPage].data.push({
key: '',
comment: `New Lore ${db.loreBook[db.loreBookPage].data.length + 1}`,
content: '',
mode: 'normal',
insertorder: 100,
alwaysActive: false,
secondkey: "",
selective: false
})
}
else if(type === 0){
if(type === 0){
db.characters[selectedID].globalLore.push({
key: '',
comment: `New Lore ${db.characters[selectedID].globalLore.length + 1}`,
Expand Down Expand Up @@ -71,9 +59,8 @@ export async function loadLoreBookPrompt(){
const page = char.chatPage
const characterLore = char.globalLore ?? []
const chatLore = char.chats[page].localLore ?? []
const globalLore = db.loreBook[db.loreBookPage]?.data ?? []
const moduleLorebook = getModuleLorebooks()
const fullLore = characterLore.concat(chatLore).concat(moduleLorebook).concat(globalLore)
const fullLore = characterLore.concat(chatLore).concat(moduleLorebook)
const currentChat = char.chats[page].message
const loreDepth = char.loreSettings?.scanDepth ?? db.loreBookDepth
const loreToken = char.loreSettings?.tokenBudget ?? db.loreBookToken
Expand Down Expand Up @@ -224,8 +211,7 @@ export async function loadLoreBookPlusPrompt(){
const page = char.chatPage
const characterLore = char.globalLore ?? []
const chatLore = char.chats[page].localLore ?? []
const globalLore = db.loreBook[db.loreBookPage]?.data ?? []
const fullLore = characterLore.concat(chatLore.concat(globalLore)).filter((v) => { return v.content })
const fullLore = characterLore.concat(chatLore).concat(getModuleLorebooks()).filter((v) => { return v.content })
const currentChat = char.chats[page].message
const loreDepth = char.loreSettings?.scanDepth ?? db.loreBookDepth
const loreToken = char.loreSettings?.tokenBudget ?? db.loreBookToken
Expand Down Expand Up @@ -317,7 +303,6 @@ export async function importLoreBook(mode:'global'|'local'|'sglobal'){
const page = mode === 'sglobal' ? -1 : db.characters[selectedID].chatPage
let lore =
mode === 'global' ? db.characters[selectedID].globalLore :
mode === 'sglobal' ? db.loreBook[db.loreBookPage].data :
db.characters[selectedID].chats[page].localLore
const lorebook = (await selectSingleFile(['json', 'lorebook'])).data
if(!lorebook){
Expand All @@ -335,50 +320,12 @@ export async function importLoreBook(mode:'global'|'local'|'sglobal'){
}
}
else if(importedlore.entries){
const entries:{[key:string]:{
key:string[]
comment:string
content:string
order:number
constant:boolean,
name:string,
keywords:string[],
priority:number
entry:string
secondary_keys:string[]
selective:boolean
forceActivation:boolean
keys:string[]
displayName:string
text:string
contextConfig?: {
budgetPriority:number
prefix:string
suffix:string
}
}} = importedlore.entries
for(const key in entries){
const currentLore = entries[key]
lore.push({
key: currentLore.key ? currentLore.key.join(', ') :
currentLore.keys ? currentLore.keys.join(', ') :
currentLore.keywords ? currentLore.keywords.join(', ') : '',
insertorder: currentLore.order ?? currentLore.priority ?? currentLore?.contextConfig?.budgetPriority ?? 0,
comment: currentLore.comment || currentLore.name || currentLore.displayName || '',
content: currentLore.content || currentLore.entry || currentLore.text || '',
mode: "normal",
alwaysActive: currentLore.constant ?? currentLore.forceActivation ?? false,
secondkey: currentLore.secondary_keys ? currentLore.secondary_keys.join(', ') : "",
selective: currentLore.selective ?? false
})
}
const entries:{[key:string]:CCLorebook} = importedlore.entries
lore.push(...convertExternalLorebook(entries))
}
if(mode === 'global'){
db.characters[selectedID].globalLore = lore
}
else if(mode === 'sglobal'){
db.loreBook[db.loreBookPage].data = lore
}
else{
db.characters[selectedID].chats[page].localLore = lore
}
Expand All @@ -388,14 +335,56 @@ export async function importLoreBook(mode:'global'|'local'|'sglobal'){
}
}

interface CCLorebook{
key:string[]
comment:string
content:string
order:number
constant:boolean,
name:string,
keywords:string[],
priority:number
entry:string
secondary_keys:string[]
selective:boolean
forceActivation:boolean
keys:string[]
displayName:string
text:string
contextConfig?: {
budgetPriority:number
prefix:string
suffix:string
}
}

export function convertExternalLorebook(entries:{[key:string]:CCLorebook}){
let lore:loreBook[] = []
for(const key in entries){
const currentLore = entries[key]
lore.push({
key: currentLore.key ? currentLore.key.join(', ') :
currentLore.keys ? currentLore.keys.join(', ') :
currentLore.keywords ? currentLore.keywords.join(', ') : '',
insertorder: currentLore.order ?? currentLore.priority ?? currentLore?.contextConfig?.budgetPriority ?? 0,
comment: currentLore.comment || currentLore.name || currentLore.displayName || '',
content: currentLore.content || currentLore.entry || currentLore.text || '',
mode: "normal",
alwaysActive: currentLore.constant ?? currentLore.forceActivation ?? false,
secondkey: currentLore.secondary_keys ? currentLore.secondary_keys.join(', ') : "",
selective: currentLore.selective ?? false
})
}
return lore
}

export async function exportLoreBook(mode:'global'|'local'|'sglobal'){
try {
const selectedID = get(selectedCharID)
const db = get(DataBase)
const page = mode === 'sglobal' ? -1 : db.characters[selectedID].chatPage
const lore =
mode === 'global' ? db.characters[selectedID].globalLore :
mode === 'sglobal' ? db.loreBook[db.loreBookPage].data :
db.characters[selectedID].chats[page].localLore
const stringl = Buffer.from(JSON.stringify({
type: 'risu',
Expand Down
Loading

0 comments on commit f6ba77f

Please sign in to comment.