This commit is contained in:
kwaroran
2023-05-10 07:41:37 +09:00
committed by GitHub
13 changed files with 51 additions and 41 deletions

View File

@@ -5,4 +5,4 @@ A AIChat Client, but better.
Msi version: https://github.com/kwaroran/RisuAI-release/releases Msi version: https://github.com/kwaroran/RisuAI-release/releases
Web version: http://risu.pages.dev/ Web version: http://risuai.xyz/

View File

@@ -3,14 +3,14 @@ export function onRequest(context) {
return drive(request, context.env); return drive(request, context.env);
} }
const encodedRedirectUri = encodeURIComponent("https://risu.pages.dev/") const encodedRedirectUri = encodeURIComponent("https://risuai.xyz/")
async function drive(request, env){ async function drive(request, env){
const url = new URL(request.url); const url = new URL(request.url);
const headerE = { const headerE = {
"Access-Control-Allow-Origin": "https://risu.pages.dev", "Access-Control-Allow-Origin": "https://risuai.xyz",
"Access-Control-Allow-Headers": "*" "Access-Control-Allow-Headers": "*"
} }

View File

@@ -38,7 +38,7 @@ async function fetchProxy(request) {
const status = originalResponse.status; const status = originalResponse.status;
let newResponseHeaders = new Headers(responseHeaders); let newResponseHeaders = new Headers(responseHeaders);
newResponseHeaders.set('access-control-allow-origin', 'https://risu.pages.dev/'); newResponseHeaders.set('access-control-allow-origin', 'https://risuai.xyz/');
newResponseHeaders.set('access-control-allow-credentials', "true"); newResponseHeaders.set('access-control-allow-credentials', "true");
newResponseHeaders.delete('content-security-policy'); newResponseHeaders.delete('content-security-policy');
newResponseHeaders.delete('content-security-policy-report-only'); newResponseHeaders.delete('content-security-policy-report-only');

View File

@@ -8,7 +8,7 @@
}, },
"package": { "package": {
"productName": "RisuAI", "productName": "RisuAI",
"version": "0.7.6" "version": "0.7.7"
}, },
"tauri": { "tauri": {
"allowlist": { "allowlist": {

View File

@@ -1,8 +1,10 @@
<script> <script>
import { ArrowBigLeftIcon } from "lucide-svelte"; import { ArrowBigLeftIcon } from "lucide-svelte";
import { changeLanguage, language } from "src/lang"; import { changeLanguage, language } from "src/lang";
import { addDefaultCharacters } from "src/ts/characters"; import { addDefaultCharacters } from "src/ts/characters";
import { DataBase } from "src/ts/database"; import { DataBase } from "src/ts/database";
import { sleep } from "src/ts/util";
let step = 0 let step = 0
let provider = 0 let provider = 0
@@ -167,6 +169,8 @@
$DataBase.forceReplaceUrl2 = $DataBase.forceReplaceUrl $DataBase.forceReplaceUrl2 = $DataBase.forceReplaceUrl
await addDefaultCharacters() await addDefaultCharacters()
$DataBase.didFirstSetup = true $DataBase.didFirstSetup = true
await sleep(2000)
location.reload()
}}> {language.confirm}</button> }}> {language.confirm}</button>
</div> </div>
{/if} {/if}

View File

@@ -21,19 +21,17 @@
function createScratch(){ function createScratch(){
reseter(); reseter();
const cid = createNewCharacter() const cid = createNewCharacter()
selectedCharID.set(cid) selectedCharID.set(-1)
} }
function createGroup(){ function createGroup(){
reseter(); reseter();
const cid = createNewGroup() const cid = createNewGroup()
selectedCharID.set(cid) selectedCharID.set(-1)
} }
async function createImport(){ async function createImport(){
reseter(); reseter();
const cid = await importCharacter() const cid = await importCharacter()
if(cid){ selectedCharID.set(-1)
selectedCharID.set(cid)
}
} }
function changeChar(index:number){ function changeChar(index:number){

View File

@@ -11,28 +11,6 @@ import { characterFormatUpdate } from "./characters"
import { downloadFile, readImage } from "./globalApi" import { downloadFile, readImage } from "./globalApi"
import { cloneDeep } from "lodash" import { cloneDeep } from "lodash"
type OfficialCardSpec = {
spec: 'chara_card_v2'
spec_version: '2.0' // May 8th addition
data: {
name: string
description: string
personality: string
scenario: string
first_mes: string
mes_example: string
creator_notes: string
system_prompt: string
post_history_instructions: string
alternate_greetings: string[]
character_book?: CharacterBook
tags: string[]
creator: string
character_version: number
extensions: Record<string, any>
}
}
type CharacterBook = null type CharacterBook = null
export async function importCharacter() { export async function importCharacter() {

View File

@@ -7,7 +7,7 @@ import { cloneDeep } from 'lodash';
export const DataBase = writable({} as any as Database) export const DataBase = writable({} as any as Database)
export const loadedStore = writable(false) export const loadedStore = writable(false)
export let appVer = '0.7.6' export let appVer = '0.7.7'
export function setDatabase(data:Database){ export function setDatabase(data:Database){

View File

@@ -10,7 +10,7 @@ import { open } from '@tauri-apps/api/shell';
export async function checkDriver(type:'save'|'load'|'loadtauri'|'savetauri'){ export async function checkDriver(type:'save'|'load'|'loadtauri'|'savetauri'){
const CLIENT_ID = '580075990041-l26k2d3c0nemmqiu3d3aag01npfrkn76.apps.googleusercontent.com'; const CLIENT_ID = '580075990041-l26k2d3c0nemmqiu3d3aag01npfrkn76.apps.googleusercontent.com';
const REDIRECT_URI = 'https://risu.pages.dev/'; const REDIRECT_URI = `https://${location.host}/`
const SCOPE = 'https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.appdata'; const SCOPE = 'https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.appdata';
const encodedRedirectUri = encodeURIComponent(REDIRECT_URI); const encodedRedirectUri = encodeURIComponent(REDIRECT_URI);
const authorizationUrl = `https://accounts.google.com/o/oauth2/auth?client_id=${CLIENT_ID}&redirect_uri=${encodedRedirectUri}&scope=${SCOPE}&response_type=code&state=${type}`; const authorizationUrl = `https://accounts.google.com/o/oauth2/auth?client_id=${CLIENT_ID}&redirect_uri=${encodedRedirectUri}&scope=${SCOPE}&response_type=code&state=${type}`;

View File

@@ -8,7 +8,7 @@ import { get } from "svelte/store";
import { DataBase, loadedStore, setDatabase, type Database, updateTextTheme, defaultSdDataFunc } from "./database"; import { DataBase, loadedStore, setDatabase, type Database, updateTextTheme, defaultSdDataFunc } from "./database";
import pako from "pako"; import pako from "pako";
import { appWindow } from "@tauri-apps/api/window"; import { appWindow } from "@tauri-apps/api/window";
import { checkUpdate } from "./update"; import { checkOldDomain, checkUpdate } from "./update";
import { selectedCharID } from "./stores"; import { selectedCharID } from "./stores";
import { Body, ResponseType, fetch as TauriFetch } from "@tauri-apps/api/http"; import { Body, ResponseType, fetch as TauriFetch } from "@tauri-apps/api/http";
import { loadPlugins } from "./process/plugins"; import { loadPlugins } from "./process/plugins";
@@ -265,6 +265,7 @@ export async function loadData() {
else{ else{
usingSw = false usingSw = false
} }
checkOldDomain()
} }
try { try {
await pargeChunks() await pargeChunks()
@@ -465,7 +466,7 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
headers["Content-Type"] = `application/json` headers["Content-Type"] = `application/json`
} }
if(arg.rawResponse){ if(arg.rawResponse){
const furl = new URL("https://risu.pages.dev/proxy") const furl = new URL("/proxy")
furl.searchParams.set("url", url) furl.searchParams.set("url", url)
const da = await fetch(furl, { const da = await fetch(furl, {
@@ -481,7 +482,7 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
} }
} }
else{ else{
const furl = new URL("https://risu.pages.dev/proxy") const furl = new URL("/proxy")
furl.searchParams.set("url", url) furl.searchParams.set("url", url)

View File

@@ -6,7 +6,7 @@ convertor.setOption('simpleLineBreaks', true);
export function ParseMarkdown(data:string) { export function ParseMarkdown(data:string) {
return DOMPurify.sanitize(convertor.makeHtml(data), { return DOMPurify.sanitize(convertor.makeHtml(data), {
FORBID_TAGS: ['a'] FORBID_TAGS: []
}) })
} }

View File

@@ -1,10 +1,11 @@
import { fetch } from "@tauri-apps/api/http"; import { fetch } from "@tauri-apps/api/http";
import { DataBase, appVer, setDatabase } from "./database"; import { DataBase, appVer, setDatabase } from "./database";
import { alertConfirm } from "./alert"; import { alertConfirm, alertMd } from "./alert";
import { language } from "../lang"; import { language } from "../lang";
import { get } from "svelte/store"; import { get } from "svelte/store";
import {open} from '@tauri-apps/api/shell' import {open} from '@tauri-apps/api/shell'
const isOldDomain = location.hostname.includes('pages.dev')
export async function checkUpdate(){ export async function checkUpdate(){
try { try {
@@ -49,3 +50,31 @@ function versionStringToNumber(versionString:string):number {
.join("") .join("")
); );
} }
export function checkOldDomain(){
let db = get(DataBase)
if(true){
if(!db.didFirstSetup){
location.href = 'https://risuai.xyz'
alertMd("Redirecting...")
return
}
if(db.language === 'ko'){
alertMd("# 웹 버전 RisuAI의 도메인이 **risuai.xyz**로 변경되었습니다"
+ "\n\nRisuAI의 현재 도메인 risu.pages.dev는 클라우드플레어의 기본 도메인으로, 뭔가를 하기 힘든 구조입니다. 그래서 도메인을 옮기기로 했습니다."
+ "\n\n현재 도메인인 risu.pages.dev은 언젠가 셧다운됩니다."
+ "\n\n**브라우저는 교차 도메인 저장소를 허용하지 않으므로 설정에서 Google 드라이브에 백업/로드해서 데이터를 옮기거나 새 도메인으로 수동으로 옮겨야합니다. 그렇지 않은 경우 이 도메인이 셧다운 될 때, 데이터는 영원히 사라집니다.**"
+ "\n\n[새로운 도메인 링크](https://risuai.xyz/)."
)
}
else{
alertMd("# Web version RisuAI's domain has transfered to **risuai.xyz**"
+ "\n\nRisuAI's domain risu.pages.dev is cloudflare's default domain name, which we can't do something freely. so we decided to move to another domain."
+ "\n\nThe current domain risu.pages.dev will be shut downed eventually."
+ "\n\n**Browsers doesn't allow cross-domain storage so you should migrate datas by backuping/loading to google drive in settings or migrate manually to new domain. if not, when this domain shuts down: YOUR DATA WILL BE GONE FOREVER.**"
+ "\n\n[Link to new domain](https://risuai.xyz/)."
)
}
return
}
}

View File

@@ -1 +1 @@
{"version":"0.7.5"} {"version":"0.7.6"}