= 0 && $DataBase.characters[$selectedCharID].viewScreen !== 'none'}
diff --git a/src/lib/Setting/Pages/AccessibilitySettings.svelte b/src/lib/Setting/Pages/AccessibilitySettings.svelte
index c731b43b..36be9121 100644
--- a/src/lib/Setting/Pages/AccessibilitySettings.svelte
+++ b/src/lib/Setting/Pages/AccessibilitySettings.svelte
@@ -1,5 +1,5 @@
+
+
+
{
+ const cha = chara
+ const len = chara.chats.length
+ let chats = chara.chats
+ chats.unshift({
+ message:[], note:'', name:`New Chat ${len + 1}`, localLore:[]
+ })
+ if(cha.type === 'group'){
+ cha.characters.map((c) => {
+ chats[len].message.push({
+ saying: c,
+ role: 'char',
+ data: findCharacterbyId(c).firstMessage
+ })
+ })
+ }
+ chara.chats = chats
+ chara.chatPage = 0
+ }}>New Chat
+
+
+ {#each chara.chats as chat, i}
+
{
+ if(!editMode){
+ chara.chatPage = i
+ }
+ }} class="flex items-center text-neutral-200 border-solid border-0 border-gray-600 p-2 cursor-pointer rounded-md"class:bg-selected={i === chara.chatPage}>
+ {#if editMode}
+
+ {:else}
+ {chat.name}
+ {/if}
+
+ {
+ e.stopPropagation()
+ exportChat(i)
+ }}>
+
+
+ {
+ e.stopPropagation()
+ if(chara.chats.length === 1){
+ alertError(language.errors.onlyOneChat)
+ return
+ }
+ const d = await alertConfirm(`${language.removeConfirm}${chat.name}`)
+ if(d){
+ chara.chatPage = 0
+ let chats = chara.chats
+ chats.splice(i, 1)
+ chara.chats = chats
+ }
+ }}>
+
+
+
+
+ {/each}
+
+
+
+
+
+
+ {#if $DataBase.supaMemoryType !== 'none'}
+
+
+
+ {/if}
+
+
+ {#if chara.type === 'group'}
+
+
+
+ {/if}
+
\ No newline at end of file
diff --git a/src/lib/SideBars/Sidebar.svelte b/src/lib/SideBars/Sidebar.svelte
index e4ecd2eb..e866a9d6 100644
--- a/src/lib/SideBars/Sidebar.svelte
+++ b/src/lib/SideBars/Sidebar.svelte
@@ -1,7 +1,8 @@
-
-
+ import { ArrowLeft, ArrowRight } from "lucide-svelte";
+ import { DynamicGUI, sideBarStore } from "src/ts/stores";
+
+
+
+{#if $sideBarStore && !$DynamicGUI}
+ {sideBarStore.set(false)}} class="absolute top-3 left-0 h-12 w-12 border-r border-b border-t border-borderc rounded-r-md bg-darkbg hover:border-neutral-200 transition-colors flex items-center justify-center text-neutral-200 z-20">
+
+
+{:else}
+ {sideBarStore.set(true)}} class="absolute top-3 left-0 h-12 w-12 border-r border-b border-t border-borderc rounded-r-md bg-darkbg hover:border-neutral-200 transition-colors flex items-center justify-center text-neutral-200 opacity-50 hover:opacity-90 z-20">
+
+
+{/if}
\ No newline at end of file
diff --git a/src/ts/parser.ts b/src/ts/parser.ts
index 6e1a1905..b0ffde3a 100644
--- a/src/ts/parser.ts
+++ b/src/ts/parser.ts
@@ -524,12 +524,17 @@ const blockMatcher = (p1:string,matcherArg:matcherArg) => {
const content = p1.substring(bn + 1)
const statement = logic.split(" ", 2)
-
- if(["","0","-1"].includes(statement[1])){
- return ''
+ switch(statement[0]){
+ case 'if':{
+ if(["","0","-1"].includes(statement[1])){
+ return ''
+ }
+
+ return content.trim()
+ }
}
- return content.trim()
+ return null
}
@@ -562,6 +567,7 @@ export function risuChatParser(da:string, arg:{
let nested:string[] = [""]
let pf = performance.now()
let v = new Uint8Array(512)
+ let pureMode = false
const matcherObj = {
chatID: chatID,
chara: chara,
@@ -603,7 +609,7 @@ export function risuChatParser(da:string, arg:{
}
pointer++
const dat = nested.shift()
- const mc = matcher(dat, matcherObj)
+ const mc = (pureMode) ? null :matcher(dat, matcherObj)
nested[0] += mc ?? `{{${dat}}}`
break
}
@@ -612,8 +618,21 @@ export function risuChatParser(da:string, arg:{
break
}
const dat = nested.shift()
- const mc = smMatcher(dat, matcherObj)
- nested[0] += mc ?? `<${dat}>`
+ switch(dat){
+ case 'Pure':{
+ pureMode = true
+ break
+ }
+ case '/Pure':{
+ pureMode = false
+ break
+ }
+ default:{
+ const mc = (pureMode) ? null : smMatcher(dat, matcherObj)
+ nested[0] += mc ?? `<${dat}>`
+ break
+ }
+ }
break
}
default:{
diff --git a/src/ts/storage/globalApi.ts b/src/ts/storage/globalApi.ts
index d69b4013..1f95ad96 100644
--- a/src/ts/storage/globalApi.ts
+++ b/src/ts/storage/globalApi.ts
@@ -39,7 +39,7 @@ interface fetchLog{
let fetchLog:fetchLog[] = []
-export async function downloadFile(name:string, data:Uint8Array) {
+export async function downloadFile(name:string, data:Uint8Array|ArrayBuffer) {
const downloadURL = (data:string, fileName:string) => {
const a = document.createElement('a')
a.href = data
diff --git a/src/ts/stores.ts b/src/ts/stores.ts
index 56176601..cd59d9eb 100644
--- a/src/ts/stores.ts
+++ b/src/ts/stores.ts
@@ -5,17 +5,20 @@ function updateSize(){
w: window.innerWidth,
h: window.innerHeight
})
+ DynamicGUI.set(window.innerWidth <= 1024)
}
export const SizeStore = writable({
w: 0,
h: 0
})
+export const DynamicGUI = writable(false)
export const sideBarStore = writable(window.innerWidth > 1024)
export const selectedCharID = writable(-1)
export const CharEmotion = writable({} as {[key:string]: [string, string, number][]})
export const ViewBoxsize = writable({ width: 12 * 16, height: 12 * 16 }); // Default width and height in pixels
export const settingsOpen = writable(false)
+export const botMakerMode = writable(false)
updateSize()
window.addEventListener("resize", updateSize);
\ No newline at end of file
diff --git a/tailwind.config.js b/tailwind.config.js
index 20fe7fa4..697fe8c8 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -14,10 +14,15 @@ export default {
draculared: "#ff5555"
},
minWidth: {
+ '2': '0.5rem',
+ '8': '2rem',
+ '12': '3rem',
'20': '5rem',
'14': '3.5rem',
'half': '50%',
- '5': '1.25rem'
+ '5': '1.25rem',
+ '6': '1.5rem',
+
},
maxWidth:{
'half': '50%',
@@ -36,6 +41,7 @@ export default {
'3xl': '72rem',
},
minHeight:{
+ '2': '0.5rem',
'8': '2rem',
'5': '1.25rem',
'14': '3.5rem',