From a2eb077dc6eb835abae64c4f50fb2f4c319091f9 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Mon, 8 May 2023 23:09:51 +0900 Subject: [PATCH 1/5] [fix] Fixed character descriptions --- public/sample/yuzu.png | Bin 3701630 -> 3701498 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/sample/yuzu.png b/public/sample/yuzu.png index b6ef076c79ee109ae663c4d7ffd07d0f221ef971..5b8243751fdf59e5a050f8d3655f7c1dd01ac2b8 100644 GIT binary patch delta 6253 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 delta 5644 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 fu-n&vv%37Yy}RR||LAWo Date: Tue, 9 May 2023 00:26:18 +0900 Subject: [PATCH 2/5] remove unused dummy code. --- src/lib/SideBars/Settings.svelte | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/lib/SideBars/Settings.svelte b/src/lib/SideBars/Settings.svelte index 79cecddf..e790c266 100644 --- a/src/lib/SideBars/Settings.svelte +++ b/src/lib/SideBars/Settings.svelte @@ -262,11 +262,6 @@ Sampler - Upscaler -
Enable Hires From ba286099ebb31173f093d9023d8234df4663f27e Mon Sep 17 00:00:00 2001 From: kwaroran Date: Tue, 9 May 2023 01:17:07 +0900 Subject: [PATCH 3/5] [feat] spec v1 basic boilerplate --- src/lib/SideBars/CharConfig.svelte | 3 +- src/lib/SideBars/Sidebar.svelte | 3 +- src/ts/characterCards.ts | 336 +++++++++++++++++++++++++++++ src/ts/characters.ts | 238 -------------------- 4 files changed, 340 insertions(+), 240 deletions(-) create mode 100644 src/ts/characterCards.ts diff --git a/src/lib/SideBars/CharConfig.svelte b/src/lib/SideBars/CharConfig.svelte index 50d7b9ed..03b5e2ca 100644 --- a/src/lib/SideBars/CharConfig.svelte +++ b/src/lib/SideBars/CharConfig.svelte @@ -5,7 +5,7 @@ import { selectedCharID } from "../../ts/stores"; import { PlusIcon, SmileIcon, TrashIcon, UserIcon, ActivityIcon, BookIcon, LoaderIcon, User } from 'lucide-svelte' import Check from "../Others/Check.svelte"; - import { addCharEmotion, addingEmotion, exportChar, getCharImage, rmCharEmotion, selectCharImg, makeGroupImage } from "../../ts/characters"; + import { addCharEmotion, addingEmotion, getCharImage, rmCharEmotion, selectCharImg, makeGroupImage } from "../../ts/characters"; import LoreBook from "./LoreBookSetting.svelte"; import { alertConfirm, alertError, alertSelectChar } from "../../ts/alert"; import BarIcon from "./BarIcon.svelte"; @@ -14,6 +14,7 @@ import {isEqual, cloneDeep} from 'lodash' import Help from "../Others/Help.svelte"; import RegexData from "./RegexData.svelte"; + import { exportChar } from "src/ts/characterCards"; let subMenu = 0 let subberMenu = 0 diff --git a/src/lib/SideBars/Sidebar.svelte b/src/lib/SideBars/Sidebar.svelte index d784e27c..515c3106 100644 --- a/src/lib/SideBars/Sidebar.svelte +++ b/src/lib/SideBars/Sidebar.svelte @@ -3,7 +3,8 @@ import { DataBase } from "../../ts/database"; import BarIcon from "./BarIcon.svelte"; import { Plus, User, X, Settings, Users, Edit3Icon, ArrowUp, ArrowDown, ListIcon, LayoutGridIcon, PlusIcon} from 'lucide-svelte' - import { characterFormatUpdate, createNewCharacter, createNewGroup, getCharImage, importCharacter } from "../../ts/characters"; + import { characterFormatUpdate, createNewCharacter, createNewGroup, getCharImage } from "../../ts/characters"; + import {importCharacter} from 'src/ts/characterCards' import SettingsDom from './Settings.svelte' import CharConfig from "./CharConfig.svelte"; import { language } from "../../lang"; diff --git a/src/ts/characterCards.ts b/src/ts/characterCards.ts new file mode 100644 index 00000000..bc7fdacd --- /dev/null +++ b/src/ts/characterCards.ts @@ -0,0 +1,336 @@ +import { get } from "svelte/store" +import { alertConfirm, alertError, alertNormal, alertStore } from "./alert" +import { DataBase, defaultSdDataFunc, type character, saveImage, setDatabase } from "./database" +import { checkNullish, selectSingleFile, sleep } from "./util" +import { language } from "src/lang" +import { encode as encodeMsgpack, decode as decodeMsgpack } from "@msgpack/msgpack"; +import { v4 as uuidv4 } from 'uuid'; +import exifr from 'exifr' +import { PngMetadata } from "./exif" +import { characterFormatUpdate } from "./characters" +import { downloadFile, readImage } from "./globalApi" + +type OfficialCardSpec = { + spec: 'chara_card_v2' + spec_version: '2.0' // May 8th addition + data: { + name: string + description: string + personality: string + scenario: string + first_mes: string + mes_example: string + creator_notes: string + system_prompt: string + post_history_instructions: string + alternate_greetings: string[] + character_book?: CharacterBook + tags: string[] + creator: string + character_version: number + extensions: Record + } +} + +type CharacterBook = null + +export async function importCharacter() { + try { + const f = await selectSingleFile(['png', 'json']) + if(!f){ + return + } + if(f.name.endsWith('json')){ + const da = JSON.parse(Buffer.from(f.data).toString('utf-8')) + if(await importSpecv2(da)){ + return + } + if((da.char_name || da.name) && (da.char_persona || da.description) && (da.char_greeting || da.first_mes)){ + let db = get(DataBase) + db.characters.push({ + name: da.char_name ?? da.name, + firstMessage: da.char_greeting ?? da.first_mes, + desc: da.char_persona ?? da.description, + notes: '', + chats: [{ + message: [], + note: '', + name: 'Chat 1', + localLore: [] + }], + chatPage: 0, + image: '', + emotionImages: [], + bias: [], + globalLore: [], + viewScreen: 'none', + chaId: uuidv4(), + sdData: defaultSdDataFunc(), + utilityBot: false, + customscript: [], + exampleMessage: '' + }) + DataBase.set(db) + alertNormal(language.importedCharacter) + return + } + else{ + alertError(language.errors.noData) + return + } + } + alertStore.set({ + type: 'wait', + msg: 'Loading... (Reading)' + }) + await sleep(10) + const img = f.data + const readed = (await exifr.parse(img, true)) + + console.log(readed) + if(readed.chara){ + // standard spec v2 imports + const charaData:CharacterCardV2 = JSON.parse(Buffer.from(readed.chara, 'base64').toString('utf-8')) + if(await importSpecv2(charaData)){ + return + } + } + if(readed.risuai){ + // old risu imports + await sleep(10) + const va = decodeMsgpack(Buffer.from(readed.risuai, 'base64')) as any + if(va.type !== 101){ + alertError(language.errors.noData) + return + } + + + let char:character = va.data + let db = get(DataBase) + if(char.emotionImages && char.emotionImages.length > 0){ + for(let i=0;i 0){ + for(let i=0;i", + name: char.name, + personality: "", + scenario: "", + talkativeness: "0.5" + } + + await sleep(10) + img = PngMetadata.write(img, { + 'chara': Buffer.from(JSON.stringify(tavernData)).toString('base64'), + 'risuai': data + }) + + alertStore.set({ + type: 'wait', + msg: 'Loading... (Writing)' + }) + + char.image = '' + await sleep(10) + await downloadFile(`${char.name.replace(/[<>:"/\\|?*\.\,]/g, "")}_export.png`, img) + + alertNormal(language.successExport) + + } + catch(e){ + alertError(`${e}`) + } + +} + + +async function importSpecv2(card:CharacterCardV2):Promise{ + if(!card ||card.spec !== 'chara_card_v2'){ + return false + } + let data = card.data + + let db = get(DataBase) + + const risuext = data.extensions.risuai + if(risuext && risuext.emotions){ + for(let i=0;i" + name: string + personality: "" + scenario: "" + talkativeness: "0.5" +} diff --git a/src/ts/characters.ts b/src/ts/characters.ts index 92bc5dcd..705b58e4 100644 --- a/src/ts/characters.ts +++ b/src/ts/characters.ts @@ -42,143 +42,6 @@ export function createNewGroup(){ return db.characters.length - 1 } -export async function importCharacter() { - try { - const f = await selectSingleFile(['png', 'json']) - if(!f){ - return - } - if(f.name.endsWith('json')){ - const da = JSON.parse(Buffer.from(f.data).toString('utf-8')) - if((da.char_name || da.name) && (da.char_persona || da.description) && (da.char_greeting || da.first_mes)){ - let db = get(DataBase) - db.characters.push({ - name: da.char_name ?? da.name, - firstMessage: da.char_greeting ?? da.first_mes, - desc: da.char_persona ?? da.description, - notes: '', - chats: [{ - message: [], - note: '', - name: 'Chat 1', - localLore: [] - }], - chatPage: 0, - image: '', - emotionImages: [], - bias: [], - globalLore: [], - viewScreen: 'none', - chaId: uuidv4(), - sdData: defaultSdDataFunc(), - utilityBot: false, - customscript: [], - exampleMessage: '' - }) - DataBase.set(db) - alertNormal(language.importedCharacter) - return - } - else{ - alertError(language.errors.noData) - return - } - } - alertStore.set({ - type: 'wait', - msg: 'Loading... (Reading)' - }) - await sleep(10) - const img = f.data - const readed = (await exifr.parse(img, true)) - - console.log(readed) - if(readed.risuai){ - await sleep(10) - const va = decodeMsgpack(Buffer.from(readed.risuai, 'base64')) as any - if(va.type !== 101){ - alertError(language.errors.noData) - return - } - - - let char:character = va.data - let db = get(DataBase) - if(char.emotionImages && char.emotionImages.length > 0){ - for(let i=0;i" - name: string - personality: "" - scenario: "" - talkativeness: "0.5" -} - export async function selectCharImg(charId:number) { const selected = await selectSingleFile(['png']) if(!selected){ @@ -270,94 +120,6 @@ export async function rmCharEmotion(charId:number, emotionId:number) { setDatabase(db) } -export async function exportChar(charaID:number) { - const db = get(DataBase) - let char:character = JSON.parse(JSON.stringify(db.characters[charaID])) - - if(!char.image){ - alertError('Image Required') - return - } - const conf = await alertConfirm(language.exportConfirm) - if(!conf){ - return - } - - alertStore.set({ - type: 'wait', - msg: 'Loading...' - }) - - let img = await readImage(char.image) - - try{ - if(char.emotionImages && char.emotionImages.length > 0){ - for(let i=0;i", - name: char.name, - personality: "", - scenario: "", - talkativeness: "0.5" - } - - await sleep(10) - img = PngMetadata.write(img, { - 'chara': Buffer.from(JSON.stringify(tavernData)).toString('base64'), - 'risuai': data - }) - - alertStore.set({ - type: 'wait', - msg: 'Loading... (Writing)' - }) - - char.image = '' - await sleep(10) - await downloadFile(`${char.name.replace(/[<>:"/\\|?*\.\,]/g, "")}_export.png`, img) - - alertNormal(language.successExport) - - } - catch(e){ - alertError(`${e}`) - } - -} - export async function exportChat(page:number){ try { From 28d802609311542cd072bcefd684b65d47c97d8d Mon Sep 17 00:00:00 2001 From: kwaroran Date: Tue, 9 May 2023 01:19:36 +0900 Subject: [PATCH 4/5] [fix] fix textgen again --- src/ts/process/request.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ts/process/request.ts b/src/ts/process/request.ts index e8c5eba2..4b144da2 100644 --- a/src/ts/process/request.ts +++ b/src/ts/process/request.ts @@ -111,7 +111,8 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' let DURL = db.textgenWebUIURL let bodyTemplate:any const proompt = stringlizeChat(formated, currentChar.name) - if(DURL.includes('api')){ + const isNewAPI = DURL.includes('api') + if(isNewAPI){ bodyTemplate = { 'max_new_tokens': 80, 'do_sample': true, @@ -174,6 +175,12 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' console.log(res.data) if(res.ok){ try { + if(isNewAPI){ + return { + type: 'success', + result: dat.results[0].text.substring(proompt.length) + } + } return { type: 'success', result: dat.data[0].substring(proompt.length) From b1cbf00c6eabdb1f72079cd46e6776d32a267855 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Tue, 9 May 2023 01:20:38 +0900 Subject: [PATCH 5/5] update version to 0.7.3 --- src-tauri/tauri.conf.json | 2 +- src/ts/database.ts | 2 +- version.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 74b0fd39..d2ff6511 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "RisuAI", - "version": "0.7.2" + "version": "0.7.3" }, "tauri": { "allowlist": { diff --git a/src/ts/database.ts b/src/ts/database.ts index 11f14581..a7ae81d4 100644 --- a/src/ts/database.ts +++ b/src/ts/database.ts @@ -6,7 +6,7 @@ import { saveImage as saveImageGlobal } from './globalApi'; export const DataBase = writable({} as any as Database) export const loadedStore = writable(false) -export let appVer = '0.7.2' +export let appVer = '0.7.3' export function setDatabase(data:Database){ diff --git a/version.json b/version.json index 638300ad..cb4cf34b 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{"version":"0.7.2"} +{"version":"0.7.3"}