From 5bede2b90a37550536ee61cdcb0723b8abc1b36d Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 20 Mar 2024 21:02:34 +0900 Subject: [PATCH 1/6] Change Reverse proxy name to Custom and add additionalParams --- .../_be501c44-234b-456c-83d8-30a7c60e68ca.jpg | Bin 0 -> 62011 bytes src/lang/cn.ts | 2 +- src/lang/de.ts | 4 +- src/lang/en.ts | 7 ++- src/lang/ko.ts | 4 +- src/lang/vi.ts | 2 +- src/lib/Setting/Pages/BotSettings.svelte | 42 +++++++++++++++++- src/lib/UI/ModelList.svelte | 3 +- src/lib/UI/Realm/RealmPopUp.svelte | 3 +- src/lib/UI/Title.svelte | 6 +++ src/ts/model/names.ts | 8 +++- src/ts/process/memory/termMemory.ts | 28 ++++++++++++ src/ts/process/request.ts | 37 +++++++++++++++ src/ts/storage/database.ts | 2 + 14 files changed, 136 insertions(+), 12 deletions(-) create mode 100644 public/_be501c44-234b-456c-83d8-30a7c60e68ca.jpg create mode 100644 src/ts/process/memory/termMemory.ts diff --git a/public/_be501c44-234b-456c-83d8-30a7c60e68ca.jpg b/public/_be501c44-234b-456c-83d8-30a7c60e68ca.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ada1c7f45c2d6e83e95d5238b0531f0f5a6d6075 GIT binary patch literal 62011 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 )P_5 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 {/if} {#if $DataBase.aiModel === 'reverse_proxy' || $DataBase.subModel === 'reverse_proxy'} - {language.forceReplaceUrl} URL + URL {language.proxyAPIKey} @@ -577,6 +577,46 @@ + {#if $DataBase.aiModel === 'reverse_proxy'} + + + + + + + + {#if $DataBase.bias.length === 0} + +
{language.noData}
+ + {/if} + {#each $DataBase.additionalParams as additionalParams, i} + + + + + + {/each} +
{language.key}{language.value} + +
+ + + + + +
+
+ {/if} + {#if !$DataBase.promptTemplate}
diff --git a/src/lib/UI/ModelList.svelte b/src/lib/UI/ModelList.svelte index c78a0f64..1955cc17 100644 --- a/src/lib/UI/ModelList.svelte +++ b/src/lib/UI/ModelList.svelte @@ -67,7 +67,7 @@ {/if} - + {#if $DataBase.tpo && isTauri} {#if showUnrec} diff --git a/src/lib/UI/Realm/RealmPopUp.svelte b/src/lib/UI/Realm/RealmPopUp.svelte index 359a5c51..4cf59ceb 100644 --- a/src/lib/UI/Realm/RealmPopUp.svelte +++ b/src/lib/UI/Realm/RealmPopUp.svelte @@ -7,6 +7,7 @@ import { DataBase } from "src/ts/storage/database"; import RealmLicense from "./RealmLicense.svelte"; import MultiLangDisplay from "../GUI/MultiLangDisplay.svelte"; + import { tooltip } from "src/ts/gui/tooltip"; export let openedData:hubType @@ -35,7 +36,7 @@ {/each}
- + {language.popularityLevel.replace('{}', openedData.download.toString())}
diff --git a/src/lib/UI/Title.svelte b/src/lib/UI/Title.svelte index 3681b813..cf2a2649 100644 --- a/src/lib/UI/Title.svelte +++ b/src/lib/UI/Title.svelte @@ -15,6 +15,12 @@ if( today.getMonth() === 3 && today.getDate() === 1){ specialDay = 'aprilFool' } + if( today.getMonth() === 3 && today.getDate() === 14){ + specialDay = 'anniversary' + } + if( today.getMonth() === 9 && today.getDate() === 31){ + specialDay = 'halloween' + } let iconAnimation = 0 let clicks = 0 let score = 0 diff --git a/src/ts/model/names.ts b/src/ts/model/names.ts index 43169ac6..089ba87a 100644 --- a/src/ts/model/names.ts +++ b/src/ts/model/names.ts @@ -52,7 +52,7 @@ export function getModelName(name:string){ case "novellist damsel": return "NovelList Damsel" case 'reverse_proxy': - return "Reverse Proxy" + return "Custom (OpenAI-compatible)" case 'openrouter': return "OpenRouter" case 'gptvi4_1106': @@ -144,6 +144,12 @@ export function getModelShortName(model:string){ return split[split.length-1] } } + if(model.startsWith('reverse_proxy')){ + return 'Custom' + } + if(model.startsWith('oaicomp')){ + return 'Custom' + } return getModelName(model) } \ No newline at end of file diff --git a/src/ts/process/memory/termMemory.ts b/src/ts/process/memory/termMemory.ts new file mode 100644 index 00000000..e9d96a04 --- /dev/null +++ b/src/ts/process/memory/termMemory.ts @@ -0,0 +1,28 @@ +import type { OpenAIChat } from ".."; +import { HypaProcesser } from "./hypamemory"; + +export async function termMemory(chats:OpenAIChat[]){ + const processer = new HypaProcesser('MiniLM') + processer.addText(chats.map(chat=>chat.content)) + + let scoredResults:{[key:string]:number} + for(let i=1;i<5;i++){ + const chat = chats[chats.length-i] + if(!chat?.content){ + continue + } + const scoredArray = (await processer.similaritySearchScored(chat.content)).map((result) => { + return [result[0],result[1]/i] as [string,number] + }) + for(const scored of scoredArray){ + if(scoredResults[scored[0]]){ + scoredResults[scored[0]] += scored[1] + }else{ + scoredResults[scored[0]] = scored[1] + } + } + } + const result = Object.entries(scoredResults).sort((a,b)=>a[1]-b[1]) + return result.map(([content,score])=>(content)).join('\n\n') + +} \ No newline at end of file diff --git a/src/ts/process/request.ts b/src/ts/process/request.ts index 869ce04f..beca2cd1 100644 --- a/src/ts/process/request.ts +++ b/src/ts/process/request.ts @@ -606,6 +606,43 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' } } + if(raiModel === 'reverse_proxy'){ + const additionalParams = db.additionalParams + for(let i=0;i Date: Wed, 20 Mar 2024 21:06:30 +0900 Subject: [PATCH 2/6] Add support for JSON values in additionalParams --- src/lang/en.ts | 2 +- src/ts/process/request.ts | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index a2fadca7..831b6010 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -117,7 +117,7 @@ export const languageEnglish = { requestretrys: "This option is used to set the number of request retrys when request fails.", emotionPrompt: "This option is used to set the prompt that is used to detect emotion. if it is blank, it will use the default prompt.", removePunctuationHypa: "If enabled, it will remove punctuation before executing HypaMemory.", - additionalParams: "Additional parameters that would be added to the request body. if you want to exclude some parameters, you can put `{{none}}` to the value. if you want to add a header instead of body, you can put `header::` in front of the key like `header::Authorization`.", + additionalParams: "Additional parameters that would be added to the request body. if you want to exclude some parameters, you can put `{{none}}` to the value. if you want to add a header instead of body, you can put `header::` in front of the key like `header::Authorization`. if you want value as json, you can put `json::` in front of the value like `json::{\"key\":\"value\"}`. otherwise, type of the value would be determined automatically.", }, setup: { chooseProvider: "Choose AI Provider", diff --git a/src/ts/process/request.ts b/src/ts/process/request.ts index beca2cd1..6e3d1dc6 100644 --- a/src/ts/process/request.ts +++ b/src/ts/process/request.ts @@ -631,10 +631,13 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' key = key.replace('header::', '') headers[key] = value } + else if(value.startsWith('json::')){ + value = value.replace('json::', '') + try { + body[key] = JSON.parse(value) + } catch (error) {} + } else if(isNaN(parseFloat(value))){ - if(value.startsWith('"') && value.endsWith('"')){ - value = value.slice(1, -1) - } body[key] = value } else{ From 327cd701b0e28b404e8ac68cbcee3e07b34c1771 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 20 Mar 2024 21:14:42 +0900 Subject: [PATCH 3/6] fix supportsInlayImage --- src/ts/process/files/image.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/ts/process/files/image.ts b/src/ts/process/files/image.ts index 98c4a0ff..9220083b 100644 --- a/src/ts/process/files/image.ts +++ b/src/ts/process/files/image.ts @@ -86,8 +86,15 @@ export async function getInlayImage(id: string){ export function supportsInlayImage(){ const db = get(DataBase) - return db.aiModel.startsWith('gptv') || (db.aiModel === 'reverse_proxy' && db.proxyRequestModel?.startsWith('gptv')) || db.aiModel === 'gemini-pro-vision' - || db.aiModel.startsWith('claude-3') || db.proxyRequestModel?.startsWith('claude-3') + return db.aiModel.startsWith('gptv') || db.aiModel === 'gemini-pro-vision' || db.aiModel.startsWith('claude-3') || + (db.aiModel === 'reverse_proxy' && ( + db.proxyRequestModel?.startsWith('gptv') || db.proxyRequestModel === 'gemini-pro-vision' || db.proxyRequestModel?.startsWith('claude-3') || + db.proxyRequestModel === 'custom' && ( + db.customProxyRequestModel?.startsWith('gptv') || + db.customProxyRequestModel === 'gemini-pro-vision' || + db.customProxyRequestModel?.startsWith('claude-3') + ) + )) } export async function reencodeImage(img:Uint8Array){ From 495dd64eb752ab3774114006ba8533cda0df367a Mon Sep 17 00:00:00 2001 From: kwaroran Date: Thu, 21 Mar 2024 03:27:22 +0900 Subject: [PATCH 4/6] Make request GET method and fix fullscreen --- src/styles.css | 3 ++- src/ts/characterCards.ts | 15 ++------------- src/ts/storage/database.ts | 2 ++ src/ts/storage/globalApi.ts | 10 +++------- 4 files changed, 9 insertions(+), 21 deletions(-) diff --git a/src/styles.css b/src/styles.css index b1b28a67..6f6d304b 100644 --- a/src/styles.css +++ b/src/styles.css @@ -26,6 +26,7 @@ body{ --risu-theme-textcolor2: #64748b; --risu-theme-darkborderc: #4b5563; --risu-theme-darkbutton: #374151; + --risu-height-size: 100%; } @@ -36,7 +37,7 @@ body{ } html, body{ - height: 100% + height: var(--risu-height-size); } .chattext p{ diff --git a/src/ts/characterCards.ts b/src/ts/characterCards.ts index 3805e37f..45016cb9 100644 --- a/src/ts/characterCards.ts +++ b/src/ts/characterCards.ts @@ -169,12 +169,7 @@ export async function characterURLImport() { url.searchParams.delete('realm'); window.history.pushState(null, '', url.toString()); - const res = await fetch(`${hubURL}/hub/info`,{ - method: "POST", - body: JSON.stringify({ - id: realmPath - }) - }) + const res = await fetch(`${hubURL}/hub/info/${realmPath}`) if(res.status !== 200){ alertError(await res.text()) return @@ -826,13 +821,7 @@ export async function downloadRisuHub(id:string) { type: "wait", msg: "Downloading..." }) - const res = await fetch(hubURL + '/hub/get', { - method: "POST", - body: JSON.stringify({ - id: id, - apiver: 3 - }) - }) + const res = await fetch(hubURL + '/hub/get/' + id) if(res.status !== 200){ alertError(await res.text()) return diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 3ab34c22..348db650 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -376,6 +376,7 @@ export function setDatabase(data:Database){ data.modules ??= [] data.enabledModules ??= [] data.additionalParams ??= [] + data.heightMode ??= 0 changeLanguage(data.language) DataBase.set(data) @@ -602,6 +603,7 @@ export interface Database{ sideMenuRerollButton?:boolean requestInfoInsideChat?:boolean additionalParams:[string, string][] + heightMode:number } export interface customscript{ diff --git a/src/ts/storage/globalApi.ts b/src/ts/storage/globalApi.ts index 6b5a724d..81003edb 100644 --- a/src/ts/storage/globalApi.ts +++ b/src/ts/storage/globalApi.ts @@ -1560,13 +1560,9 @@ export function textifyReadableStream(stream:ReadableStream){ } export function toggleFullscreen(){ - // @ts-ignore - const requestFullscreen = document.documentElement.requestFullscreen ?? document.documentElement.webkitRequestFullscreen as typeof document.documentElement.requestFullscreen - // @ts-ignore - const exitFullscreen = document.exitFullscreen ?? document.webkitExitFullscreen as typeof document.exitFullscreen - // @ts-ignore - const fullscreenElement = document.fullscreenElement ?? document.webkitFullscreenElement as typeof document.fullscreenElement - fullscreenElement ? exitFullscreen() : requestFullscreen({ + + const fullscreenElement = document.fullscreenElement + fullscreenElement ? document.exitFullscreen() : document.documentElement.requestFullscreen({ navigationUI: "hide" }) } From 82e5e48ae34ddd0f9d9f603b00d7bbc363cbee8b Mon Sep 17 00:00:00 2001 From: kwaroran Date: Thu, 21 Mar 2024 03:32:43 +0900 Subject: [PATCH 5/6] Add height mode option to advanced settings --- src/lang/en.ts | 1 + src/lib/Setting/Pages/AdvancedSettings.svelte | 10 +++++++ src/ts/storage/database.ts | 4 +-- src/ts/storage/globalApi.ts | 26 +++++++++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index 831b6010..76b07569 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -550,4 +550,5 @@ export const languageEnglish = { log: "Log", popularityLevelDesc: "Popularity increases with downloads, etc. to estimate, 3.7 popularity is about 1 downloads.", additionalParams: "Additional Parameters", + heightMode: "Height Mode", } \ No newline at end of file diff --git a/src/lib/Setting/Pages/AdvancedSettings.svelte b/src/lib/Setting/Pages/AdvancedSettings.svelte index 3008456e..e30e7313 100644 --- a/src/lib/Setting/Pages/AdvancedSettings.svelte +++ b/src/lib/Setting/Pages/AdvancedSettings.svelte @@ -43,6 +43,16 @@ High +{language.heightMode} + + Normal + Percent + VH + DVH + SVH + LVH + +
diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 348db650..3935a5e1 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -376,7 +376,7 @@ export function setDatabase(data:Database){ data.modules ??= [] data.enabledModules ??= [] data.additionalParams ??= [] - data.heightMode ??= 0 + data.heightMode ??= 'normal' changeLanguage(data.language) DataBase.set(data) @@ -603,7 +603,7 @@ export interface Database{ sideMenuRerollButton?:boolean requestInfoInsideChat?:boolean additionalParams:[string, string][] - heightMode:number + heightMode:string } export interface customscript{ diff --git a/src/ts/storage/globalApi.ts b/src/ts/storage/globalApi.ts index 81003edb..ce4e4db3 100644 --- a/src/ts/storage/globalApi.ts +++ b/src/ts/storage/globalApi.ts @@ -475,6 +475,7 @@ export async function loadData() { updateColorScheme() updateTextTheme() updateAnimationSpeed() + updateHeightMode() if(db.botSettingAtStart){ botMakerMode.set(true) } @@ -1571,4 +1572,29 @@ export function trimNonLatin(data:string){ return data .replace(/[^\x00-\x7F]/g, "") .replace(/ +/g, ' ') .trim() +} + +export function updateHeightMode(){ + const db = get(DataBase) + const root = document.querySelector(':root') as HTMLElement; + switch(db.heightMode){ + case 'auto': + root.style.setProperty('--risu-height-size', '100%'); + break + case 'vh': + root.style.setProperty('--risu-height-size', '100vh'); + break + case 'dvh': + root.style.setProperty('--risu-height-size', '100dvh'); + break + case 'lvh': + root.style.setProperty('--risu-height-size', '100lvh'); + break + case 'svh': + root.style.setProperty('--risu-height-size', '100svh'); + break + case 'percent': + root.style.setProperty('--risu-height-size', '100%'); + break + } } \ No newline at end of file From d69b54e335efc73c01faff7d7f9871da0b0993bb Mon Sep 17 00:00:00 2001 From: kwaroran Date: Thu, 21 Mar 2024 03:35:52 +0900 Subject: [PATCH 6/6] Update version to 1.87.0 --- src-tauri/tauri.conf.json | 2 +- src/etc/patchNote.ts | 14 ++++++-------- src/ts/storage/database.ts | 2 +- version.json | 2 +- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 2f9ce66a..484ba3c2 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "RisuAI", - "version": "1.86.1" + "version": "1.87.0" }, "tauri": { "allowlist": { diff --git a/src/etc/patchNote.ts b/src/etc/patchNote.ts index 01479d30..0e2c65e1 100644 --- a/src/etc/patchNote.ts +++ b/src/etc/patchNote.ts @@ -1,14 +1,12 @@ export const patchNote = { - version: "1.86", + version: "1.87", content: ` -# Update 1.86 -- Added 'Request info inside chat' option -- Added response info for streamed chat -- Added color scheme customization -- Added color scheme export and import -- Added {{previous_chat_log::A}} syntax -- Minor bug fixes +# Update 1.87 +- Changed name of Reverse Proxy to Custom (OpenAI-Compatible) +- Added Additional Parameters to Custom (OpenAI-Compatible) +- Added Height mode option +- Fixed file post not working on Custom (OpenAI-Compatible) ` } diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 3935a5e1..87ef9256 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -15,7 +15,7 @@ import type { OobaChatCompletionRequestParams } from '../model/ooba'; export const DataBase = writable({} as any as Database) export const loadedStore = writable(false) -export let appVer = "1.86.1" +export let appVer = "1.87.0" export let webAppSubVer = '' export function setDatabase(data:Database){ diff --git a/version.json b/version.json index 9f2fdd6b..faf98f50 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{"version":"1.86.1"} \ No newline at end of file +{"version":"1.87.0"} \ No newline at end of file