diff --git a/android/app/build.gradle b/android/app/build.gradle
index 37c95d6e..3837c82e 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -8,7 +8,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 2
- versionName "114.1.1"
+ versionName "114.2.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions {
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
diff --git a/android/app/release/output-metadata.json b/android/app/release/output-metadata.json
index 9483a73c..1a578006 100644
--- a/android/app/release/output-metadata.json
+++ b/android/app/release/output-metadata.json
@@ -12,7 +12,7 @@
"filters": [],
"attributes": [],
"versionCode": 2,
- "versionName": "114.1.1",
+ "versionName": "114.2.0",
"outputFile": "app-release.apk"
}
],
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index 5b16fd02..662c33e4 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -8,7 +8,7 @@
},
"package": {
"productName": "RisuAI",
- "version": "114.1.1"
+ "version": "114.2.0"
},
"tauri": {
"allowlist": {
diff --git a/src/lib/Setting/Pages/OtherBotSettings.svelte b/src/lib/Setting/Pages/OtherBotSettings.svelte
index 96ddfc78..f3add6b5 100644
--- a/src/lib/Setting/Pages/OtherBotSettings.svelte
+++ b/src/lib/Setting/Pages/OtherBotSettings.svelte
@@ -45,6 +45,7 @@
Stable Diffusion WebUI
Novel AI
Dall-E
+ Stability API
{#if $DataBase.sdProvider === 'webui'}
@@ -205,6 +206,43 @@
{/if}
+
+ {#if $DataBase.sdProvider === 'stability'}
+ Stability API Key
+
+
+ Stability Model
+
+ SD Ultra
+ SD Core
+ SD3 Large
+ SD3 Medium
+
+
+ {#if $DataBase.stabilityModel === 'core'}
+ SD Core Style
+
+ Unspecified
+ 3D Model
+ Analog Film
+ Anime
+ Cinematic
+ Comic Book
+ Digital Art
+ Enhance
+ Fantasy Art
+ Isometric
+ Line Art
+ Low Poly
+ Modeling Compound
+ Neon Punk
+ Origami
+ Photographic
+ Pixel Art
+ Tile Texture
+
+ {/if}
+ {/if}
diff --git a/src/ts/process/stableDiff.ts b/src/ts/process/stableDiff.ts
index 17adb0ce..aadd9705 100644
--- a/src/ts/process/stableDiff.ts
+++ b/src/ts/process/stableDiff.ts
@@ -56,6 +56,7 @@ export async function stableDiff(currentChar:character,prompt:string){
export async function generateAIImage(genPrompt:string, currentChar:character, neg:string, returnSdData:string):Promise{
const db = get(DataBase)
+ console.log(db.sdProvider)
if(db.sdProvider === 'webui'){
@@ -361,6 +362,57 @@ export async function generateAIImage(genPrompt:string, currentChar:character, n
return false
}
return returnSdData
+ }
+ if(db.sdProvider === 'stability'){
+ const formData = new FormData()
+ const model = db.stabilityModel
+ formData.append('prompt', genPrompt)
+ if(model !== 'core' && model !== 'ultra'){
+ formData.append('negative_prompt', neg)
+ formData.append('model', model)
+ }
+ if(model === 'core'){
+ if(db.stabllityStyle){
+ formData.append('style_preset', db.stabllityStyle)
+ }
+ }
+ if(model === 'ultra'){
+ formData.append('negative_prompt', neg)
+ }
+
+ const uri = model === 'core' ? 'core' : model === 'ultra' ? 'ultra' : 'sd3'
+ const da = await fetch("https://api.stability.ai/v2beta/stable-image/generate/" + uri, {
+ body: formData,
+ headers:{
+ "authorization": "Bearer " + db.stabilityKey,
+ "accept": "image/*"
+ },
+ method: 'POST'
+ })
+
+ const res = await da.arrayBuffer()
+ if(!da.ok){
+ alertError(Buffer.from(res).toString())
+ return false
+ }
+
+ if((da.headers["content-type"] ?? "").startsWith('application/json')){
+ alertError(Buffer.from(res).toString())
+ return false
+ }
+
+ if(returnSdData === 'inlay'){
+ return `data:image/png;base64,${Buffer.from(res).toString('base64')}`
+ }
+
+ let charemotions = get(CharEmotion)
+ const img = `data:image/png;base64,${Buffer.from(res).toString('base64')}`
+ const emos:[string, string,number][] = [[img, img, Date.now()]]
+ charemotions[currentChar.chaId] = emos
+ CharEmotion.set(charemotions)
+ return returnSdData
+
+
}
return ''
}
\ No newline at end of file
diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts
index 198175b8..6d0cdbd5 100644
--- a/src/ts/storage/database.ts
+++ b/src/ts/storage/database.ts
@@ -14,7 +14,7 @@ import type { OobaChatCompletionRequestParams } from '../model/ooba';
export const DataBase = writable({} as any as Database)
export const loadedStore = writable(false)
-export let appVer = "114.1.1"
+export let appVer = "114.2.0"
export let webAppSubVer = ''
export function setDatabase(data:Database){
@@ -416,6 +416,8 @@ export function setDatabase(data:Database){
data.font ??= 'default'
data.customFont ??= ''
data.lineHeight ??= 1.25
+ data.stabilityModel ??= 'sd3-large'
+ data.stabllityStyle ??= ''
changeLanguage(data.language)
DataBase.set(data)
}
@@ -686,6 +688,9 @@ export interface Database{
font: string
customFont: string
lineHeight: number
+ stabilityModel: string
+ stabilityKey: string
+ stabllityStyle: string
}
export interface customscript{
diff --git a/version.json b/version.json
index ca02aba7..5bc52848 100644
--- a/version.json
+++ b/version.json
@@ -1 +1 @@
-{"version":"114.1.1"}
\ No newline at end of file
+{"version":"114.2.0"}
\ No newline at end of file