diff --git a/src/lib/Others/QuickSettingsGUI.svelte b/src/lib/Others/QuickSettingsGUI.svelte
new file mode 100644
index 00000000..2df772f0
--- /dev/null
+++ b/src/lib/Others/QuickSettingsGUI.svelte
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+ {#if QuickSettings.index === 0}
+
+ {:else if QuickSettings.index === 1}
+
+ {:else if QuickSettings.index === 2}
+
+ {/if}
+
\ No newline at end of file
diff --git a/src/lib/SideBars/Sidebar.svelte b/src/lib/SideBars/Sidebar.svelte
index da5e6d83..4f9850ef 100644
--- a/src/lib/SideBars/Sidebar.svelte
+++ b/src/lib/SideBars/Sidebar.svelte
@@ -8,7 +8,10 @@
sideBarClosing,
sideBarStore,
OpenRealmStore,
- PlaygroundStore
+ PlaygroundStore,
+
+ QuickSettings
+
} from "../../ts/stores.svelte";
import { setDatabase, type folder } from "../../ts/storage/database.svelte";
import { DBState } from 'src/ts/stores.svelte';
@@ -45,6 +48,7 @@
import { ConnectionIsHost, ConnectionOpenStore, RoomIdStore } from "src/ts/sync/multiuser";
import { sideBarSize } from "src/ts/gui/guisize";
import DevTool from "./DevTool.svelte";
+ import QuickSettingsGui from "../Others/QuickSettingsGUI.svelte";
let sideBarMode = $state(0);
let editMode = $state(false);
let menuMode = $state(0);
@@ -751,7 +755,9 @@
{/if}
- {#if devTool}
+ {#if QuickSettings.open}
+
+ {:else if devTool}
{:else if $botMakerMode}
diff --git a/src/ts/defaulthotkeys.ts b/src/ts/defaulthotkeys.ts
index c02c5b25..5578d108 100644
--- a/src/ts/defaulthotkeys.ts
+++ b/src/ts/defaulthotkeys.ts
@@ -119,16 +119,6 @@ export const defaultHotkeys: Hotkey[] = [
ctrl: true,
action: 'previewRequest'
},
- {
- key: 'i',
- ctrl: true,
- action: 'import'
- },
- {
- key: 'x',
- ctrl: true,
- action: 'export'
- },
{
key: 'w',
ctrl: true,
diff --git a/src/ts/hotkey.ts b/src/ts/hotkey.ts
index 1a4159cb..a24b7c42 100644
--- a/src/ts/hotkey.ts
+++ b/src/ts/hotkey.ts
@@ -1,10 +1,12 @@
import { get } from "svelte/store"
-import { alertSelect, alertToast, doingAlert } from "./alert"
+import { alertMd, alertSelect, alertToast, alertWait, doingAlert } from "./alert"
import { changeToPreset as changeToPreset2, getDatabase } from "./storage/database.svelte"
-import { alertStore, MobileGUIStack, MobileSideBar, openPersonaList, openPresetList, SafeModeStore, selectedCharID, settingsOpen } from "./stores.svelte"
+import { alertStore, MobileGUIStack, MobileSideBar, openPersonaList, openPresetList, OpenRealmStore, PlaygroundStore, QuickSettings, SafeModeStore, selectedCharID, settingsOpen } from "./stores.svelte"
import { language } from "src/lang"
import { updateTextThemeAndCSS } from "./gui/colorscheme"
import { defaultHotkeys } from "./defaulthotkeys"
+import { doingChat, previewBody, sendChat } from "./process/index.svelte"
+import { getRequestLog } from "./globalApi.svelte"
export function initHotkey(){
document.addEventListener('keydown', (ev) => {
@@ -111,6 +113,67 @@ export function initHotkey(){
updateTextThemeAndCSS()
break
}
+ case 'prevChar':{
+ const sorted = database.characters.map((v, i) => {
+ return {name: v.name, i}
+ }).sort((a, b) => a.name.localeCompare(b.name))
+ const currentIndex = sorted.findIndex(v => v.i === get(selectedCharID))
+ if(currentIndex === 0){
+ return
+ }
+ if(currentIndex >= sorted.length - 1){
+ return
+ }
+ selectedCharID.set(sorted[currentIndex - 1].i)
+ PlaygroundStore.set(0)
+ OpenRealmStore.set(false)
+ break
+ }
+ case 'nextChar':{
+ const sorted = database.characters.map((v, i) => {
+ return {name: v.name, i}
+ }).sort((a, b) => a.name.localeCompare(b.name))
+ const currentIndex = sorted.findIndex(v => v.i === get(selectedCharID))
+ if(currentIndex === 0){
+ return
+ }
+ if(currentIndex >= sorted.length - 1){
+ return
+ }
+ selectedCharID.set(sorted[currentIndex + 1].i)
+ PlaygroundStore.set(0)
+ OpenRealmStore.set(false)
+ break
+ }
+ case 'quickMenu':{
+ quickMenu()
+ break
+ }
+ case 'previewRequest':{
+ if(get(doingChat) && get(selectedCharID) !== -1){
+ return false
+ }
+ alertWait("Loading...")
+ sendChat(-1, {
+ previewPrompt: true
+ })
+
+ let md = ''
+ md += '### Prompt\n'
+ md += '```json\n' + JSON.stringify(JSON.parse(previewBody), null, 2).replaceAll('```', '\\`\\`\\`') + '\n```\n'
+ doingChat.set(false)
+ alertMd(md)
+ break
+ }
+ case 'toggleLog':{
+ alertMd(getRequestLog())
+ break
+ }
+ case 'quickSettings':{
+ QuickSettings.open = !QuickSettings.open
+ QuickSettings.index = 0
+ break
+ }
default:{
hotKeyRanThisTime = false
}
@@ -221,18 +284,7 @@ export function initHotkey(){
if(doingAlert()){
return
}
- const selStr = await alertSelect([
- language.presets,
- language.persona,
- language.cancel
- ])
- const sel = parseInt(selStr)
- if(sel === 0){
- openPresetList.set(!get(openPresetList))
- }
- if(sel === 1){
- openPersonaList.set(!get(openPersonaList))
- }
+ quickMenu()
}
if(touchs === 1){
touchStartTime = Date.now()
@@ -243,6 +295,21 @@ export function initHotkey(){
})
}
+async function quickMenu(){
+ const selStr = await alertSelect([
+ language.presets,
+ language.persona,
+ language.cancel
+ ])
+ const sel = parseInt(selStr)
+ if(sel === 0){
+ openPresetList.set(!get(openPresetList))
+ }
+ if(sel === 1){
+ openPersonaList.set(!get(openPersonaList))
+ }
+}
+
function clickQuery(query:string){
let ele = document.querySelector(query) as HTMLElement
console.log(ele)
diff --git a/src/ts/stores.svelte.ts b/src/ts/stores.svelte.ts
index 6ac312ca..ba714e6c 100644
--- a/src/ts/stores.svelte.ts
+++ b/src/ts/stores.svelte.ts
@@ -98,6 +98,11 @@ export const LoadingStatusState = $state({
text: '',
})
+export const QuickSettings = $state({
+ open: false,
+ index: 0
+})
+
export const disableHighlight = writable(true)
ReloadGUIPointer.subscribe(() => {