diff --git a/package.json b/package.json index a682d838..bdead105 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "@msgpack/msgpack": "3.0.0-beta2", "@tauri-apps/api": "1.2.0", "buffer": "^6.0.3", + "core-js": "^3.30.2", "dompurify": "^3.0.1", "exifr": "^7.1.3", "gpt-3-encoder": "^1.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e64679e5..ac98d069 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,7 @@ specifiers: '@types/wicg-file-system-access': ^2020.9.6 autoprefixer: ^10.4.14 buffer: ^6.0.3 + core-js: ^3.30.2 dompurify: ^3.0.1 exifr: ^7.1.3 gpt-3-encoder: ^1.1.4 @@ -55,6 +56,7 @@ dependencies: '@msgpack/msgpack': 3.0.0-beta2 '@tauri-apps/api': 1.2.0 buffer: 6.0.3 + core-js: 3.30.2 dompurify: 3.0.1 exifr: 7.1.3 gpt-3-encoder: 1.1.4 @@ -852,6 +854,11 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true + /core-js/3.30.2: + resolution: {integrity: sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==} + requiresBuild: true + dev: false + /crc-32/0.3.0: resolution: {integrity: sha512-kucVIjOmMc1f0tv53BJ/5WIX+MGLcKuoBhnGqQrgKJNqLByb/sVMWfW/Aw6hw0jgcqjJ2pi9E5y32zOIpaUlsA==} engines: {node: '>=0.8'} diff --git a/public/discord-mark-white.svg b/public/discord-mark-white.svg new file mode 100644 index 00000000..22ee27ba --- /dev/null +++ b/public/discord-mark-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 6930cf6e..d9556299 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "RisuAI", - "version": "1.11.0" + "version": "1.12.0" }, "tauri": { "allowlist": { diff --git a/src/App.svelte b/src/App.svelte index 694fb1e0..5d84b993 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -1,13 +1,14 @@ +

{language.advancedSettings}

+{language.advancedSettingsWarn} +{language.loreBookDepth} + +{language.loreBookToken} + + +{language.additionalPrompt} + + +{language.descriptionPrefix} + + +{language.emotionPrompt} + + +{language.SuperMemory} Prompt + + +{language.requestretrys} + + +Request Type + + +{#if $DataBase.requestmet === 'proxy'} + Request Proxy URL + +{/if} +{#if isTauri && $DataBase.requestmet === 'normal'} + Request Lib + +{/if} + +
+ + {language.sayNothing} +
+
+ + {language.showUnrecommended} +
+
+ + {language.useExperimental} +
+ diff --git a/src/lib/Setting/Pages/BotSettings.svelte b/src/lib/Setting/Pages/BotSettings.svelte new file mode 100644 index 00000000..7b5897d6 --- /dev/null +++ b/src/lib/Setting/Pages/BotSettings.svelte @@ -0,0 +1,171 @@ + + +

{language.chatBot}

+{language.model} + + +{language.submodel} + + +{#if $DataBase.aiModel === 'palm2' || $DataBase.subModel === 'palm2'} + Palm2 {language.apiKey} + +{/if} +{#if $DataBase.aiModel === 'gpt35' || $DataBase.aiModel === 'gpt4' || $DataBase.subModel === 'gpt4' || $DataBase.subModel === 'gpt35'} + OpenAI {language.apiKey} + +
+ + OpenAI {language.streaming} +
+{/if} +{#if $DataBase.aiModel === 'custom'} + {language.plugin} + +{/if} +{#if $DataBase.aiModel === 'textgen_webui' || $DataBase.subModel === 'textgen_webui'} + TextGen {language.providerURL} + + You must use WebUI without agpl license or use unmodified version with agpl license to observe the contents of the agpl license. + You must use textgen webui with --no-stream and without --cai-chat or --chat + {#if !isTauri} + You are using web version. you must use ngrok or other tunnels to use your local webui. + {/if} +{/if} +{language.mainPrompt} + +{tokens.mainPrompt} {language.tokens} +{language.jailbreakPrompt} + +{tokens.jailbreak} {language.tokens} +{language.globalNote} + + +{tokens.globalNote} {language.tokens} +{language.maxContextSize} +{#if $DataBase.aiModel === 'gpt35'} + +{:else if $DataBase.aiModel === 'gpt4' || $DataBase.aiModel === 'textgen_webui'} + +{:else if $DataBase.aiModel === 'custom'} + +{/if} +{language.maxResponseSize} + +{language.temperature} + +{($DataBase.temperature / 100).toFixed(2)} +{language.frequencyPenalty} + +{($DataBase.frequencyPenalty / 100).toFixed(2)} +{language.presensePenalty} + +{($DataBase.PresensePenalty / 100).toFixed(2)} + +{language.forceReplaceUrl} + +{language.submodel} {language.forceReplaceUrl} + + + + +
+ {language.advancedSettings} + {language.formatingOrder} + + Bias + + + + + + + {#if $DataBase.bias.length === 0} + +
{language.noBias}
+ + {/if} + {#each $DataBase.bias as bias, i} + + + + + + {/each} +
Bias{language.value} { + let bia = $DataBase.bias + bia.push(['', 0]) + $DataBase.bias = bia + }}>
+ + + +
+ +
+ + {language.promptPreprocess} +
+
+ + + diff --git a/src/lib/Setting/Pages/Communities.svelte b/src/lib/Setting/Pages/Communities.svelte new file mode 100644 index 00000000..e9e07c21 --- /dev/null +++ b/src/lib/Setting/Pages/Communities.svelte @@ -0,0 +1,16 @@ + + +

{language.community}

+ + \ No newline at end of file diff --git a/src/lib/Setting/Pages/DisplaySettings.svelte b/src/lib/Setting/Pages/DisplaySettings.svelte new file mode 100644 index 00000000..ce8cce15 --- /dev/null +++ b/src/lib/Setting/Pages/DisplaySettings.svelte @@ -0,0 +1,130 @@ + + +

{language.display}

+{language.UiLanguage} + + +{language.theme} + + + +{#if $DataBase.theme === "waifu"} + {language.waifuWidth} + + {($DataBase.waifuWidth)}% + + {language.waifuWidth2} + + {($DataBase.waifuWidth2)}% +{/if} + +{language.textColor} + + +{#if $DataBase.textTheme === "custom"} +
+ + Normal Text +
+
+ + Italic Text +
+
+ + Bold Text +
+
+ + Italic Bold Text +
+{/if} + + +{language.translator} + +{language.UISize} + +{($DataBase.zoomsize)}% + +{language.iconSize} + +{($DataBase.iconsize)}% + +
+ + {language.autoTranslation} +
+
+ + {language.fullscreen} +
+ +
+ + {language.showMemoryLimit} +
+ +
+ { + if(check){ + $DataBase.customBackground = '-' + const d = await selectSingleFile(['png', 'webp', 'gif']) + if(!d){ + $DataBase.customBackground = '' + return + } + const img = await saveImage(d.data) + $DataBase.customBackground = img + } + else{ + $DataBase.customBackground = '' + } + }}> + {language.useCustomBackground} +
+ +
+ + {language.playMessage} +
+ +
+ + {language.SwipeRegenerate} +
+ +
+ + {language.roundIcons} +
+ +
+ + {language.instantRemove} +
diff --git a/src/lib/Setting/Pages/FilesSettings.svelte b/src/lib/Setting/Pages/FilesSettings.svelte new file mode 100644 index 00000000..24a929f0 --- /dev/null +++ b/src/lib/Setting/Pages/FilesSettings.svelte @@ -0,0 +1,40 @@ + + +

{language.files}

+ + + \ No newline at end of file diff --git a/src/lib/Setting/Pages/OtherBotSettings.svelte b/src/lib/Setting/Pages/OtherBotSettings.svelte new file mode 100644 index 00000000..a14c2941 --- /dev/null +++ b/src/lib/Setting/Pages/OtherBotSettings.svelte @@ -0,0 +1,59 @@ + +

{language.otherBots}

+ +{language.imageGeneration} + +{language.provider} + + +{#if $DataBase.sdProvider === 'webui'} +You must use WebUI with --api flag + You must use WebUI without agpl license or use unmodified version with agpl license to observe the contents of the agpl license. + {#if !isTauri} + You are using web version. you must use ngrok or other tunnels to use your local webui. + {/if} + WebUI {language.providerURL} + + Steps + + + CFG Scale + + + Width + + Height + + Sampler + + +
+ + Enable Hires +
+ {#if $DataBase.sdConfig.enable_hr === true} + denoising_strength + + hr_scale + + Upscaler + + {/if} +{/if} + + +TTS +ElevenLabs API key + diff --git a/src/lib/Setting/Pages/PluginSettings.svelte b/src/lib/Setting/Pages/PluginSettings.svelte new file mode 100644 index 00000000..641aaa4b --- /dev/null +++ b/src/lib/Setting/Pages/PluginSettings.svelte @@ -0,0 +1,64 @@ + +

{language.plugin}

+{language.pluginWarn} + + +
+ {#if $DataBase.plugins.length === 0} + No Plugins + {:else} + {#each $DataBase.plugins as plugin, i} + {#if i !== 0} +
+ {/if} +
+ {plugin.displayName ?? plugin.name} + +
+ {#if Object.keys(plugin.arguments).length > 0} +
+ {#each Object.keys(plugin.arguments) as arg} + {arg} + {#if Array.isArray(plugin.arguments[arg])} + + {:else if plugin.arguments[arg] === 'string'} + + {:else if plugin.arguments[arg] === 'int'} + + {/if} + {/each} +
+ {/if} + {/each} + {/if} +
+
+ +
\ No newline at end of file diff --git a/src/lib/Setting/Pages/UserSettings.svelte b/src/lib/Setting/Pages/UserSettings.svelte new file mode 100644 index 00000000..5d318328 --- /dev/null +++ b/src/lib/Setting/Pages/UserSettings.svelte @@ -0,0 +1,21 @@ + + +

{language.user}

+{language.userIcon} + +{language.username} + diff --git a/src/lib/Setting/Settings.svelte b/src/lib/Setting/Settings.svelte new file mode 100644 index 00000000..50d65196 --- /dev/null +++ b/src/lib/Setting/Settings.svelte @@ -0,0 +1,122 @@ + +
+
+ {#if window.innerWidth >= 700 || selected === -1} +
+ + + + + + + + + {#if window.innerWidth < 700} + + {/if} +
+ {/if} + {#if window.innerWidth >= 700 || selected !== -1} +
+ {#if selected === 0} + + {:else if selected === 1} + + {:else if selected === 2} + + {:else if selected === 3} + + {:else if selected === 4} + + {:else if selected === 5} + + {:else if selected === 6} + + {:else if selected === 7} + + {/if} + +
+ {/if} +
+
+{#if openPresetList} + {openPresetList = false}} /> +{/if} + \ No newline at end of file diff --git a/src/lib/Others/botpreset.svelte b/src/lib/Setting/botpreset.svelte similarity index 100% rename from src/lib/Others/botpreset.svelte rename to src/lib/Setting/botpreset.svelte diff --git a/src/lib/SideBars/CharConfig.svelte b/src/lib/SideBars/CharConfig.svelte index b10d3e69..88c42275 100644 --- a/src/lib/SideBars/CharConfig.svelte +++ b/src/lib/SideBars/CharConfig.svelte @@ -1,7 +1,7 @@ -
- - - -
+{#if !globalMode} +
+ + + +
+{/if} {#if submenu !== 2} {submenu === 0 ? $DataBase.characters[$selectedCharID].type === 'group' ? language.groupLoreInfo : language.globalLoreInfo : language.localLoreInfo}
diff --git a/src/lib/SideBars/RegexData.svelte b/src/lib/SideBars/RegexData.svelte index de56752a..ab33ceff 100644 --- a/src/lib/SideBars/RegexData.svelte +++ b/src/lib/SideBars/RegexData.svelte @@ -34,6 +34,7 @@ + IN: diff --git a/src/lib/SideBars/Settings.svelte b/src/lib/SideBars/Settings.svelte deleted file mode 100644 index a1a4dab2..00000000 --- a/src/lib/SideBars/Settings.svelte +++ /dev/null @@ -1,595 +0,0 @@ - - -
- - - - - - -
- -{#if subMenu === -1} -

{language.userSetting}

- {language.userIcon} - - {language.username} - - -{:else if subMenu === 0 && subSubMenu === 0} -

{language.botSettings}

-
- - -
- {language.model} - - - {language.submodel} - - - {#if $DataBase.aiModel === 'palm2' || $DataBase.subModel === 'palm2'} - Palm2 {language.apiKey} - - {/if} - {#if $DataBase.aiModel === 'gpt35' || $DataBase.aiModel === 'gpt4' || $DataBase.subModel === 'gpt4' || $DataBase.subModel === 'gpt35'} - OpenAI {language.apiKey} - -
- - OpenAI {language.streaming} -
- {/if} - {#if $DataBase.aiModel === 'custom'} - {language.plugin} - - {/if} - {#if $DataBase.aiModel === 'textgen_webui' || $DataBase.subModel === 'textgen_webui'} - TextGen {language.providerURL} - - You must use WebUI without agpl license or use unmodified version with agpl license to observe the contents of the agpl license. - You must use textgen webui with --no-stream and without --cai-chat or --chat - {#if !isTauri} - You are using web version. you must use ngrok or other tunnels to use your local webui. - {/if} - {/if} - {language.mainPrompt} - - {tokens.mainPrompt} {language.tokens} - {language.jailbreakPrompt} - - {tokens.jailbreak} {language.tokens} - {language.globalNote} - - {tokens.globalNote} {language.tokens} - {language.maxContextSize} - {#if $DataBase.aiModel === 'gpt35'} - - {:else if $DataBase.aiModel === 'gpt4' || $DataBase.aiModel === 'textgen_webui'} - - {:else if $DataBase.aiModel === 'custom'} - - {/if} - {language.maxResponseSize} - - {language.temperature} - - {($DataBase.temperature / 100).toFixed(2)} - {language.frequencyPenalty} - - {($DataBase.frequencyPenalty / 100).toFixed(2)} - {language.presensePenalty} - - {($DataBase.PresensePenalty / 100).toFixed(2)} - - {language.forceReplaceUrl} - - {language.submodel} {language.forceReplaceUrl} - - - - -
- {language.advancedSettings} - {language.formatingOrder} - - Bias - - - - - - - {#if $DataBase.bias.length === 0} - -
{language.noBias}
- - {/if} - {#each $DataBase.bias as bias, i} - - - - - - {/each} -
Bias{language.value} { - let bia = $DataBase.bias - bia.push(['', 0]) - $DataBase.bias = bia - }}>
- - - -
- -
- - {language.promptPreprocess} -
-
- - - - -{:else if subMenu === 0 && subSubMenu === 1} -

{language.botSettings}

-
- - -
- {language.imageGeneration} - - {language.provider} - - - {#if $DataBase.sdProvider === 'webui'} - You must use WebUI with --api flag - You must use WebUI without agpl license or use unmodified version with agpl license to observe the contents of the agpl license. - {#if !isTauri} - You are using web version. you must use ngrok or other tunnels to use your local webui. - {/if} - WebUI {language.providerURL} - - Steps - - - CFG Scale - - - Width - - Height - - Sampler - - -
- - Enable Hires -
- {#if $DataBase.sdConfig.enable_hr === true} - denoising_strength - - hr_scale - - Upscaler - - {/if} - {/if} - - - TTS - ElevenLabs API key - - - -{:else if subMenu == 3} -

{language.display}

- {language.UiLanguage} - - - {language.theme} - - - - {#if $DataBase.theme === "waifu"} - {language.waifuWidth} - - {($DataBase.waifuWidth)}% - - {language.waifuWidth2} - - {($DataBase.waifuWidth2)}% - {/if} - - {language.textColor} - - - {#if $DataBase.textTheme === "custom"} -
- - Normal Text -
-
- - Italic Text -
-
- - Bold Text -
-
- - Italic Bold Text -
- {/if} - - - {language.translator} - - {language.UISize} - - {($DataBase.zoomsize)}% - - {language.iconSize} - - {($DataBase.iconsize)}% - -
- - {language.autoTranslation} -
-
- - {language.fullscreen} -
- -
- - {language.showMemoryLimit} -
- -
- { - if(check){ - $DataBase.customBackground = '-' - const d = await selectSingleFile(['png', 'webp', 'gif']) - if(!d){ - $DataBase.customBackground = '' - return - } - const img = await saveImage(d.data) - $DataBase.customBackground = img - } - else{ - $DataBase.customBackground = '' - } - }}> - {language.useCustomBackground} -
- -
- - {language.playMessage} -
- -
- - {language.SwipeRegenerate} -
- -
- - {language.roundIcons} -
- -
- - {language.instantRemove} -
- -{:else if subMenu === 2} -

{language.plugin}

- {language.pluginWarn} - - -
- {#if $DataBase.plugins.length === 0} - No Plugins - {:else} - {#each $DataBase.plugins as plugin, i} - {#if i !== 0} -
- {/if} -
- {plugin.displayName ?? plugin.name} - -
- {#if Object.keys(plugin.arguments).length > 0} -
- {#each Object.keys(plugin.arguments) as arg} - {arg} - {#if Array.isArray(plugin.arguments[arg])} - - {:else if plugin.arguments[arg] === 'string'} - - {:else if plugin.arguments[arg] === 'int'} - - {/if} - {/each} -
- {/if} - {/each} - {/if} -
-
- -
-{:else if subMenu === 1} -

{language.advancedSettings}

- {language.advancedSettingsWarn} - {language.loreBookDepth} - - {language.loreBookToken} - - - {language.additionalPrompt} - - - {language.descriptionPrefix} - - - {language.emotionPrompt} - - - {language.SuperMemory} Prompt - - - {language.requestretrys} - - - Request Method - - - {#if $DataBase.requestmet === 'proxy'} - Request Proxy URL - - {/if} - {#if isTauri && $DataBase.requestmet === 'normal'} - Request Lib - - {/if} - -
- - {language.sayNothing} -
-
- - {language.showUnrecommended} -
-
- - {language.useExperimental} -
- - -{:else if subMenu === 4} -

{language.files}

- - - - - -{/if} - - \ No newline at end of file diff --git a/src/lib/SideBars/Sidebar.svelte b/src/lib/SideBars/Sidebar.svelte index d5c85b1f..af5bed90 100644 --- a/src/lib/SideBars/Sidebar.svelte +++ b/src/lib/SideBars/Sidebar.svelte @@ -29,10 +29,9 @@ getCharImage, } from "../../ts/characters"; import { importCharacter } from "src/ts/characterCards"; - import SettingsDom from "./Settings.svelte"; import CharConfig from "./CharConfig.svelte"; import { language } from "../../lang"; - import Botpreset from "../Others/botpreset.svelte"; + import Botpreset from "../Setting/botpreset.svelte"; import { onDestroy } from "svelte"; import { isEqual } from "lodash"; import SidebarAvatar from "./SidebarAvatar.svelte"; @@ -226,7 +225,10 @@ {#if sideBarMode === 0} {#if $selectedCharID < 0 || $settingsOpen} - +
+

Welcome to RisuAI!

+ Select a bot to start chating +
{:else} {/if} diff --git a/src/main.ts b/src/main.ts index 8d7eabe6..b75664dc 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,5 @@ import "./styles.css"; +import "core-js/actual" import App from "./App.svelte"; import { loadData } from "./ts/globalApi"; import { ReadableStream, WritableStream, TransformStream } from "web-streams-polyfill/ponyfill/es2018"; diff --git a/src/ts/characterCards.ts b/src/ts/characterCards.ts index a2705e9e..522b13d9 100644 --- a/src/ts/characterCards.ts +++ b/src/ts/characterCards.ts @@ -1,6 +1,6 @@ import { get } from "svelte/store" import { alertConfirm, alertError, alertNormal, alertSelect, alertStore } from "./alert" -import { DataBase, defaultSdDataFunc, type character, saveImage, setDatabase, type customscript, type loreSettings, type loreBook } from "./database" +import { DataBase, defaultSdDataFunc, type character, setDatabase, type customscript, type loreSettings, type loreBook } from "./database" import { checkNullish, selectSingleFile, sleep } from "./util" import { language } from "src/lang" import { encode as encodeMsgpack, decode as decodeMsgpack } from "@msgpack/msgpack"; @@ -8,7 +8,7 @@ import { v4 as uuidv4 } from 'uuid'; import exifr from 'exifr' import { PngMetadata } from "./exif" import { characterFormatUpdate } from "./characters" -import { downloadFile, readImage } from "./globalApi" +import { downloadFile, readImage, saveAsset } from "./globalApi" import { cloneDeep } from "lodash" @@ -69,7 +69,7 @@ export async function importCharacter() { msg: `Loading... (Getting Emotions ${i} / ${char.emotionImages.length})` }) await sleep(10) - const imgp = await saveImage(char.emotionImages[i][1] as any) + const imgp = await saveAsset(char.emotionImages[i][1] as any) char.emotionImages[i][1] = imgp } } @@ -85,7 +85,7 @@ export async function importCharacter() { } char.chatPage = 0 - char.image = await saveImage(PngMetadata.filter(img)) + char.image = await saveAsset(PngMetadata.filter(img)) db.characters.push(characterFormatUpdate(char)) char.chaId = uuidv4() setDatabase(db) @@ -94,7 +94,7 @@ export async function importCharacter() { } else if(readed.chara){ const charaData:OldTavernChar = JSON.parse(Buffer.from(readed.chara, 'base64').toString('utf-8')) - const imgp = await saveImage(PngMetadata.filter(img)) + const imgp = await saveAsset(PngMetadata.filter(img)) let db = get(DataBase) db.characters.push(convertOldTavernAndJSON(charaData, imgp)) DataBase.set(db) @@ -140,7 +140,7 @@ export async function characterHubImport() { } } { - const imgp = await saveImage(PngMetadata.filter(img)) + const imgp = await saveAsset(PngMetadata.filter(img)) let db = get(DataBase) const charaData:OldTavernChar = JSON.parse(Buffer.from(readed.chara, 'base64').toString('utf-8')) db.characters.push(convertOldTavernAndJSON(charaData, imgp)) @@ -300,7 +300,7 @@ async function importSpecv2(card:CharacterCardV2, img?:Uint8Array):Promise 0){ + for(let i=0;i { + if (data.tagName === "iframe") { + const src = node.getAttribute("src") || ""; + if (!src.startsWith("https://www.youtube.com/embed/")) { + return node.parentNode.removeChild(node); + } + } +}); + +export async function ParseMarkdown(data:string, char:(character | groupChat) = null) { + if(char && char.type !== 'group'){ + if(char.customscript){ + data = processScript(char, data, 'editdisplay') + } + if(char.additionalAssets){ + for(const asset of char.additionalAssets){ + const assetPath = await getFileSrc(asset[1]) + data = data.replaceAll(`{{raw::${asset[0]}}}`, assetPath).replaceAll(`{{img::${asset[0]}}}`,``) + } + } + } return DOMPurify.sanitize(convertor.makeHtml(data), { - FORBID_TAGS: [] + ADD_TAGS: ["iframe"], + ADD_ATTR: ["allow", "allowfullscreen", "frameborder", "scrolling"], }) } diff --git a/src/ts/process/scripts.ts b/src/ts/process/scripts.ts index 24f9c4b7..e9073206 100644 --- a/src/ts/process/scripts.ts +++ b/src/ts/process/scripts.ts @@ -4,7 +4,7 @@ import type { character } from "../database"; const dreg = /{{data}}/g -type ScriptMode = 'editinput'|'editoutput'|'editprocess' +type ScriptMode = 'editinput'|'editoutput'|'editprocess'|'editdisplay' export function processScript(char:character, data:string, mode:ScriptMode){ return processScriptFull(char, data, mode).data diff --git a/src/ts/translator/translator.ts b/src/ts/translator/translator.ts index 43f1c84d..cb682cc0 100644 --- a/src/ts/translator/translator.ts +++ b/src/ts/translator/translator.ts @@ -1,7 +1,4 @@ -import { Body,fetch as TauriFetch,ResponseType } from "@tauri-apps/api/http" -import { isTauri } from "../globalApi" import { translatorPlugin } from "../process/plugins" -import { sleep } from "../util" let cache={ origin: [''], diff --git a/version.json b/version.json index 25e6454d..8dab4229 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{"version":"1.11.0"} \ No newline at end of file +{"version":"1.12.0"} \ No newline at end of file