diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index ea81abf6..291a4fbb 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -6,6 +6,8 @@ on: branches: - main workflow_dispatch: + schedule: + - cron: '0 0 * * 0' # Runs at midnight UTC every Sunday jobs: build-and-push: diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index b0d54599..395ca244 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -9,19 +9,17 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up JDK uses: actions/setup-java@v3 with: - java-version: '17' + java-version: '21' distribution: 'temurin' - server-id: github - - - name: Setup Gradle - uses: gradle/gradle-build-action@v2 - name: Build with Gradle run: | mkdir data + bash ./src/main/resources/meta/update.sh + chmod +x gradlew ./gradlew build diff --git a/AquaNet/.env b/AquaNet/.env new file mode 100644 index 00000000..dbc79813 --- /dev/null +++ b/AquaNet/.env @@ -0,0 +1,9 @@ +VITE_AQUA_HOST=https://aquadx.net/aqua +VITE_DATA_HOST=https://aquadx.net + +VITE_AQUA_CONNECTION=aquadx.hydev.org + +VITE_TURNSTILE_SITE_KEY=0x4AAAAAAASGA2KQEIelo9P9 +VITE_DISCORD_INVITE=https://discord.gg/FNgveqFF7s +VITE_TELEGRAM_INVITE=https://t.me/+zBL4RZdyfvUzZGU1 +VITE_QQ_INVITE=https://qm.qq.com/q/wvNXbXbHbO diff --git a/AquaNet/.gitignore b/AquaNet/.gitignore index 20ffbea5..69166fea 100644 --- a/AquaNet/.gitignore +++ b/AquaNet/.gitignore @@ -32,4 +32,7 @@ dist-ssr !.yarn/sdks !.yarn/versions -public/chu3 \ No newline at end of file +public/chu3 + +# local env file +*.local \ No newline at end of file diff --git a/AquaNet/public/assets/icons/AquaDX Cat.psd b/AquaNet/psd/icons/AquaDX Cat.psd similarity index 100% rename from AquaNet/public/assets/icons/AquaDX Cat.psd rename to AquaNet/psd/icons/AquaDX Cat.psd diff --git a/AquaNet/public/assets/icons/Icon.psd b/AquaNet/psd/icons/Icon.psd similarity index 100% rename from AquaNet/public/assets/icons/Icon.psd rename to AquaNet/psd/icons/Icon.psd diff --git a/AquaNet/public/assets/imgs/All Perfect.psd b/AquaNet/psd/imgs/All Perfect.psd similarity index 100% rename from AquaNet/public/assets/imgs/All Perfect.psd rename to AquaNet/psd/imgs/All Perfect.psd diff --git a/AquaNet/public/assets/imgs/Full Combo.psd b/AquaNet/psd/imgs/Full Combo.psd similarity index 100% rename from AquaNet/public/assets/imgs/Full Combo.psd rename to AquaNet/psd/imgs/Full Combo.psd diff --git a/AquaNet/public/assets/imgs/no_cover.psd b/AquaNet/psd/imgs/no_cover.psd similarity index 100% rename from AquaNet/public/assets/imgs/no_cover.psd rename to AquaNet/psd/imgs/no_cover.psd diff --git a/AquaNet/public/assets/imgs/no_profile.psd b/AquaNet/psd/imgs/no_profile.psd similarity index 100% rename from AquaNet/public/assets/imgs/no_profile.psd rename to AquaNet/psd/imgs/no_profile.psd diff --git a/AquaNet/src/components/settings/ChuniSettings.svelte b/AquaNet/src/components/settings/ChuniSettings.svelte index c03116f3..ba525f51 100644 --- a/AquaNet/src/components/settings/ChuniSettings.svelte +++ b/AquaNet/src/components/settings/ChuniSettings.svelte @@ -34,7 +34,7 @@ // Available (unlocked) options for each kind of item // In allItems: 'namePlate', 'frame', 'trophy', 'mapIcon', 'systemVoice', 'avatarAccessory' let allItems: Record> = {} - let iKinds = { namePlate: 1, frame: 2, trophy: 3, mapIcon: 8, systemVoice: 9, avatarAccessory: 11 } + let iKinds = { namePlate: 1, frame: 2, trophy: 3, trophySub1: 4, trophySub2: 5, mapIcon: 8, systemVoice: 9, avatarAccessory: 11 } // In userbox: 'nameplateId', 'frameId', 'trophyId', 'mapIconId', 'voiceId', 'avatar{Wear/Head/Face/Skin/Item/Front/Back}' let userbox: UserBox let avatarKinds = ['Wear', 'Head', 'Face', 'Skin', 'Item', 'Front', 'Back'] as const @@ -66,6 +66,10 @@ userItems = Object.entries(iKinds).flatMap(([iKey, iKind]) => { if (iKey != 'avatarAccessory') { let ubKey = `${iKey}Id` + if (iKey.slice('trophy'.length, 'trophy'.length + 3) == "Sub") { + ubKey = `trophyIdSub${iKey.slice('trophySub'.length, 'trophySub'.length + 1)}`; + iKey = `trophy`; + } if (ubKey == 'namePlateId') ubKey = 'nameplateId' if (ubKey == 'systemVoiceId') ubKey = 'voiceId' return [{ iKey, ubKey: ubKey as keyof UserBox, diff --git a/AquaNet/src/libs/config.ts b/AquaNet/src/libs/config.ts index da9e5e70..3f62b182 100644 --- a/AquaNet/src/libs/config.ts +++ b/AquaNet/src/libs/config.ts @@ -1,15 +1,15 @@ import type { ChusanMatchingOption } from "./generalTypes" -export const AQUA_HOST = 'https://aquadx.net/aqua' -export const DATA_HOST = 'https://aquadx.net' +export const AQUA_HOST = import.meta.env.VITE_AQUA_HOST +export const DATA_HOST = import.meta.env.VITE_DATA_HOST // This will be displayed for users to connect from the client -export const AQUA_CONNECTION = 'aquadx.hydev.org' +export const AQUA_CONNECTION = import.meta.env.VITE_AQUA_CONNECTION -export const TURNSTILE_SITE_KEY = '0x4AAAAAAASGA2KQEIelo9P9' -export const DISCORD_INVITE = 'https://discord.gg/FNgveqFF7s' -export const TELEGRAM_INVITE = 'https://t.me/+zBL4RZdyfvUzZGU1' -export const QQ_INVITE = 'https://qm.qq.com/q/wvNXbXbHbO' +export const TURNSTILE_SITE_KEY = import.meta.env.VITE_TURNSTILE_SITE_KEY +export const DISCORD_INVITE = import.meta.env.VITE_DISCORD_INVITE +export const TELEGRAM_INVITE = import.meta.env.VITE_TELEGRAM_INVITE +export const QQ_INVITE = import.meta.env.VITE_QQ_INVITE // UI export const FADE_OUT = { duration: 200 } diff --git a/AquaNet/src/libs/generalTypes.ts b/AquaNet/src/libs/generalTypes.ts index e78315ff..5dd4cd12 100644 --- a/AquaNet/src/libs/generalTypes.ts +++ b/AquaNet/src/libs/generalTypes.ts @@ -142,6 +142,8 @@ export interface UserBox { frameId: number, characterId: number, trophyId: number, + trophyIdSub1: number, + trophyIdSub2: number, mapIconId: number, voiceId: number, avatarWear: number, diff --git a/AquaNet/src/libs/i18n/en_ref.ts b/AquaNet/src/libs/i18n/en_ref.ts index c739b575..3d95b0df 100644 --- a/AquaNet/src/libs/i18n/en_ref.ts +++ b/AquaNet/src/libs/i18n/en_ref.ts @@ -191,6 +191,8 @@ export const EN_REF_USERBOX = { 'userbox.nameplateId': 'Nameplate', 'userbox.frameId': 'Frame', 'userbox.trophyId': 'Trophy (Title)', + 'userbox.trophyIdSub1': 'Trophy Sub #1 (Title)', + 'userbox.trophyIdSub2': 'Trophy Sub #2 (Title)', 'userbox.mapIconId': 'Map Icon', 'userbox.voiceId': 'System Voice', 'userbox.avatarWear': 'Avatar Wear', diff --git a/AquaNet/src/pages/UserHome.svelte b/AquaNet/src/pages/UserHome.svelte index 455b36e3..e8b9b645 100644 --- a/AquaNet/src/pages/UserHome.svelte +++ b/AquaNet/src/pages/UserHome.svelte @@ -318,7 +318,13 @@ - + + {#if d.user.ratingComposition.new} + + {:else} + + {/if} +

{t('UserHome.RecentScores')}

diff --git a/AquaNet/src/pages/Welcome.svelte b/AquaNet/src/pages/Welcome.svelte index 1af1ae4c..669c56eb 100644 --- a/AquaNet/src/pages/Welcome.svelte +++ b/AquaNet/src/pages/Welcome.svelte @@ -51,7 +51,7 @@ return submitting = false } - if (turnstile === "") { + if (TURNSTILE_SITE_KEY && turnstile === "") { // Sleep for 100ms to allow Turnstile to finish error = t("welcome.waiting-turnstile") return setTimeout(submit, 100) @@ -137,11 +137,13 @@ {isSignup ? t('welcome.btn-signup') : t('welcome.btn-login')} {/if} + {#if TURNSTILE_SITE_KEY} console.log(turnstile = e.detail.token)} on:turnstile-error={_ => console.log(error = t("welcome.turnstile-error"))} on:turnstile-expired={_ => window.location.reload()} on:turnstile-timeout={_ => console.log(error = t('welcome.turnstile-timeout'))} /> + {/if}
{:else if state === "verify"}