diff --git a/src/lang/en.ts b/src/lang/en.ts
index bc0d11a6..ff25a193 100644
--- a/src/lang/en.ts
+++ b/src/lang/en.ts
@@ -813,4 +813,6 @@ export const languageEnglish = {
retranslate: "Retranslate",
loading: "Loading",
autoTranslateCachedOnly: "Auto Translate Cached Only",
+ notification: "Notification",
+ permissionDenied: "Permission Denied by Your Browser or OS",
}
\ No newline at end of file
diff --git a/src/lib/Setting/Pages/DisplaySettings.svelte b/src/lib/Setting/Pages/DisplaySettings.svelte
index 4af86f67..1d7ee9dd 100644
--- a/src/lib/Setting/Pages/DisplaySettings.svelte
+++ b/src/lib/Setting/Pages/DisplaySettings.svelte
@@ -18,6 +18,7 @@
import Arcodion from "src/lib/UI/Arcodion.svelte";
import Button from "src/lib/UI/GUI/Button.svelte";
import { CustomGUISettingMenuStore } from "src/ts/stores.svelte";
+ import { alertError } from "src/ts/alert";
const onSchemeInputChange = (e:Event) => {
changeColorScheme((e.target as HTMLInputElement).value)
@@ -362,6 +363,27 @@
+
+ {
+ let hasPermission = {state: 'denied'}
+ try {
+ hasPermission = await navigator.permissions.query({name: 'notifications'})
+ } catch (error) {
+ //for browsers that do not support permissions api
+ }
+ if(!DBState.db.notification){
+ return
+ }
+ if(hasPermission.state === 'denied'){
+ const permission = await Notification.requestPermission()
+ if(permission === 'denied'){
+ alertError(language.permissionDenied)
+ DBState.db.notification = false
+ }
+ }
+ }}/>
+
+
{#if DBState.db.showUnrecommended}
diff --git a/src/ts/process/index.svelte.ts b/src/ts/process/index.svelte.ts
index b6f73e64..4d22d63b 100644
--- a/src/ts/process/index.svelte.ts
+++ b/src/ts/process/index.svelte.ts
@@ -1330,6 +1330,22 @@ export async function sendChat(chatProcessIndex = -1,arg:{
})
}
+ if(DBState.db.notification){
+ try {
+ const permission = await Notification.requestPermission()
+ if(permission === 'granted'){
+ const noti = new Notification('RisuAI', {
+ body: result
+ })
+ noti.onclick = () => {
+ window.focus()
+ }
+ }
+ } catch (error) {
+
+ }
+ }
+
chatProcessStage.set(4)
peerSync()
diff --git a/src/ts/storage/database.svelte.ts b/src/ts/storage/database.svelte.ts
index ec6de12c..9003f5fe 100644
--- a/src/ts/storage/database.svelte.ts
+++ b/src/ts/storage/database.svelte.ts
@@ -848,6 +848,7 @@ export interface Database{
translateBeforeHTMLFormatting:boolean
autoTranslateCachedOnly:boolean
lightningRealmImport:boolean
+ notification: boolean
}
interface SeparateParameters{