diff --git a/.github/workflows/github-actions-builder.yml b/.github/workflows/github-actions-builder.yml index 2db36fa2..5c79692c 100644 --- a/.github/workflows/github-actions-builder.yml +++ b/.github/workflows/github-actions-builder.yml @@ -3,6 +3,7 @@ on: push: branches: - production + workflow_dispatch: {} jobs: publish-tauri: @@ -11,9 +12,18 @@ jobs: strategy: fail-fast: false matrix: - platform: [ubuntu-latest,macos-latest,windows-latest] - - runs-on: ${{ matrix.platform }} + # platform: [ubuntu-latest,macos-latest,windows-latest] + settings: + - platform: 'macos-latest' # for Arm based macs (M1 and above). + args: '--target aarch64-apple-darwin' + - platform: 'macos-latest' # for Intel based macs. + args: '--target x86_64-apple-darwin' + - platform: 'ubuntu-latest' # for Tauri v1 you could replace this with ubuntu-20.04. + args: '--target x86_64-unknown-linux-gnu' + - platform: 'windows-latest' + args: '--target x86_64-pc-windows-msvc' + + runs-on: ${{ matrix.settings.platform }} steps: - uses: actions/checkout@v4 - name: setup node @@ -21,7 +31,7 @@ jobs: with: node-version: 21 - id: set_var_win - if: matrix.platform == 'windows-latest' + if: matrix.settings.platform == 'windows-latest' run: | choco install jq -y - id: set_var @@ -33,7 +43,7 @@ jobs: with: version: latest - name: install dependencies (ubuntu only) - if: matrix.platform == 'ubuntu-latest' + if: matrix.settings.platform == 'ubuntu-latest' run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf @@ -51,61 +61,20 @@ jobs: ${{ runner.os }}-pnpm-store- - name: install frontend dependencies run: pnpm install --no-frozen-lockfile # change this to npm or pnpm depending on which one you use - - if: matrix.platform == 'ubuntu-latest' - run: pnpm tauri build --target x86_64-unknown-linux-gnu - - if: matrix.platform == 'ubuntu-latest' - uses: "softprops/action-gh-release@v2" - with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "latest" - tag_name: "v${{fromJson(env.VERSION_JSON).version}}" - name: "${{fromJson(env.VERSION_JSON).version}}" - generate_release_notes: true - files: | - src-tauri/target/x86_64-unknown-linux-gnu/release/**/*.deb - src-tauri/target/x86_64-unknown-linux-gnu/release/**/*.AppImage - - if: matrix.platform == 'macos-latest' + - if: matrix.settings.platform == 'macos-latest' run: rustup target add x86_64-apple-darwin - - if: matrix.platform == 'macos-latest' - run: pnpm tauri build --target x86_64-apple-darwin - - if: matrix.platform == 'macos-latest' + - if: matrix.settings.platform == 'macos-latest' run: rustup target add aarch64-apple-darwin - - if: matrix.platform == 'macos-latest' - run: pnpm tauri build --target aarch64-apple-darwin - - if: matrix.platform == 'macos-latest' - uses: "softprops/action-gh-release@v2" + - uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} + TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "latest" - tag_name: "v${{fromJson(env.VERSION_JSON).version}}" - name: "${{fromJson(env.VERSION_JSON).version}}" - generate_release_notes: true - files: | - src-tauri/target/*/release/bundle/macos/*.app - src-tauri/target/*/release/bundle/dmg/*.dmg - - if: matrix.platform == 'windows-latest' - run: pnpm tauri build - - if: matrix.platform == 'windows-latest' - uses: "softprops/action-gh-release@v2" - with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "latest" - tag_name: "v${{fromJson(env.VERSION_JSON).version}}" - name: "${{fromJson(env.VERSION_JSON).version}}" - generate_release_notes: true - files: | - src-tauri/target/x86_64-pc-windows-msvc/release/**/*.msi - # publish dist as zip when building on ubuntu - # first, zip the dist - - if: matrix.platform == 'ubuntu-latest' - run: zip -r built_code.zip dist - # then, publish the zip file - - if: matrix.platform == 'ubuntu-latest' - uses: "softprops/action-gh-release@v2" - with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "latest" - tag_name: "v${{fromJson(env.VERSION_JSON).version}}" - name: "${{fromJson(env.VERSION_JSON).version}}" - generate_release_notes: true - files: built_code.zip \ No newline at end of file + tagName: 'v__VERSION__' # the action automatically replaces \_\_VERSION\_\_ with the app version. + releaseName: 'v__VERSION__' + releaseBody: 'Release of v__VERSION__' + releaseDraft: true + prerelease: false + args: ${{ matrix.settings.args }} + tauriScript: "pnpm tauri" \ No newline at end of file diff --git a/.gitignore b/.gitignore index 8657af87..b737c769 100644 --- a/.gitignore +++ b/.gitignore @@ -38,4 +38,5 @@ vite.config.js.timestamp-* vite.config.ts.timestamp-* raise.code-workspace recc.md -__pycache__/ \ No newline at end of file +__pycache__/ +.tauri/ \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index 972f6dbe..fae0a30a 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.2.2" + versionName "114.3.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 6a926053..a330869c 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.2.2", + "versionName": "114.3.0", "outputFile": "app-release.apk" } ], diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 2a2b0c94..318e3304 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1784,6 +1784,12 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minisign-verify" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "933dca44d65cdd53b355d0b73d380a2ff5da71f87f036053188bf1eab6a19881" + [[package]] name = "miniz_oxide" version = "0.7.2" @@ -3298,6 +3304,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f078117725e36d55d29fafcbb4b1e909073807ca328ae8deb8c0b3843aac0fed" dependencies = [ "anyhow", + "base64 0.21.7", "bytes", "cocoa", "dirs-next", @@ -3313,6 +3320,7 @@ dependencies = [ "http", "ignore", "indexmap 1.9.3", + "minisign-verify", "objc", "once_cell", "open", @@ -3337,12 +3345,14 @@ dependencies = [ "tauri-utils", "tempfile", "thiserror", + "time", "tokio", "url", "uuid", "webkit2gtk", "webview2-com", "windows 0.39.0", + "zip", ] [[package]] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 6b011417..325a06ed 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -13,7 +13,7 @@ edition = "2021" tauri-build = { version = "1.4.0", features = [] } [dependencies] -tauri = { version = "1.6.0", features = ["app-all", "dialog-all", "fs-all", "http-all", "os-all", "path-all", "process-relaunch", "protocol-all", "reqwest-client", "shell-open", "window-maximize", "window-set-fullscreen"] } +tauri = { version = "1.6.0", features = [ "updater", "app-all", "dialog-all", "fs-all", "http-all", "os-all", "path-all", "process-relaunch", "protocol-all", "reqwest-client", "shell-open", "window-maximize", "window-set-fullscreen"] } serde_json = "1.0" tiktoken-rs = "0.4.0" base64 = "0.21.0" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 7459728a..09bc67af 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "RisuAI", - "version": "114.2.2" + "version": "114.3.0" }, "tauri": { "allowlist": { @@ -96,7 +96,13 @@ "csp": null }, "updater": { - "active": false + "active": true, + "endpoints": ["https://github.com/kwaroran/RisuAI/releases/latest/download/latest.json"], + "dialog": false, + "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDU2ODMzOTIxMDMxOTY1MUYKUldRZlpSa0RJVG1EVmx5Vm1WYlhFM29HMEJrUTRrYmg5dDQ0RFpvdUphNDdxQmVlWXJHVmV5TEYK", + "windows": { + "installMode": "passive" + } }, "windows": [ { diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 0ffdab3a..3602d1d4 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.2.2" +export let appVer = "114.3.0" export let webAppSubVer = '' export function setDatabase(data:Database){ diff --git a/src/ts/storage/globalApi.ts b/src/ts/storage/globalApi.ts index 3af09fc3..391bfe09 100644 --- a/src/ts/storage/globalApi.ts +++ b/src/ts/storage/globalApi.ts @@ -7,7 +7,7 @@ import { get } from "svelte/store"; import {open} from '@tauri-apps/api/shell' import { DataBase, loadedStore, setDatabase, type Database, defaultSdDataFunc } from "./database"; import { appWindow } from "@tauri-apps/api/window"; -import { checkUpdate } from "../update"; +import { checkRisuUpdate } from "../update"; import { botMakerMode, selectedCharID } from "../stores"; import { Body, ResponseType, fetch as TauriFetch } from "@tauri-apps/api/http"; import { loadPlugins } from "../plugins/plugins"; @@ -419,7 +419,7 @@ export async function loadData() { throw "Your save file is corrupted" } } - await checkUpdate() + await checkRisuUpdate() await changeFullscreen() } diff --git a/src/ts/update.ts b/src/ts/update.ts index bec07ff7..ed94bd8d 100644 --- a/src/ts/update.ts +++ b/src/ts/update.ts @@ -1,49 +1,30 @@ -import { fetch } from "@tauri-apps/api/http"; -import { DataBase, appVer, setDatabase } from "./storage/database"; -import { alertConfirm, alertError, alertMd } from "./alert"; +import { alertConfirm, alertWait } from "./alert"; import { language } from "../lang"; -import { get } from "svelte/store"; -import {open} from '@tauri-apps/api/shell' import { Capacitor } from "@capacitor/core"; +import { + checkUpdate, + installUpdate, +} from '@tauri-apps/api/updater' +import { relaunch } from '@tauri-apps/api/process' + +export async function checkRisuUpdate(){ + + if(Capacitor.isNativePlatform()){ + return + } -export async function checkUpdate(){ try { - - if(Capacitor.isNativePlatform()){ - return - } - - let db = get(DataBase) - const da = await fetch('https://raw.githubusercontent.com/kwaroran/RisuAI-release/main/version.json') - //@ts-ignore - const v:string = da.data.version - if(!v){ - return - } - if(v === db.lastup){ - return - } - const nextVer = versionStringToNumber(v) - if(isNaN(nextVer) || (!nextVer)){ - return - } - const appVerNum = versionStringToNumber(appVer) - - if(appVerNum < nextVer){ + const checked = await checkUpdate() + if(checked.shouldUpdate){ const conf = await alertConfirm(language.newVersion) if(conf){ - open("https://risuai.net/?page=download") - } - else{ - db = get(DataBase) - db.lastup = v - setDatabase(db) + alertWait(`Updating to ${checked.manifest.version}...`) + await installUpdate() + await relaunch() } } - } catch (error) { - alertError(error) - return + } } diff --git a/version.json b/version.json index 693a9ff3..d21d32f8 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{"version":"114.2.2"} \ No newline at end of file +{"version":"114.3.0"} \ No newline at end of file