diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue index a687a76..811870e 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -92,6 +92,7 @@ import NavRail from '@/components/ui/NavRail.vue' import OnboardingOverlay from '@/components/ui/onboarding/OnboardingOverlay.vue' import QuickInstanceSwitcher from '@/components/ui/QuickInstanceSwitcher.vue' import SkinSiteSessionFrame from '@/components/ui/SkinSiteSessionFrame.vue' +import StartupAnnouncementModal from '@/components/ui/StartupAnnouncementModal.vue' import SplashScreen from '@/components/ui/SplashScreen.vue' import WindowControls from '@/components/ui/WindowControls.vue' import { useCheckDisableMouseover } from '@/composables/macCssFix.js' @@ -498,6 +499,7 @@ onMounted(async () => { checkUpdates() void warnIfRunningElevated() startDirectLinkSync() + maybeShowStartupAnnouncement() }) let directLinkSync: (() => Promise) | undefined @@ -1538,6 +1540,19 @@ const updateToPlayModal = ref() const modrinthLoginFlowWaitModal = ref() +const startupAnnouncementModal = ref | null>(null) +const STARTUP_ANNOUNCEMENT_KEY = 'starlight-startup-announcement-seen-v1' + +function maybeShowStartupAnnouncement() { + try { + if (localStorage.getItem(STARTUP_ANNOUNCEMENT_KEY)) return + localStorage.setItem(STARTUP_ANNOUNCEMENT_KEY, '1') + } catch (error) { + console.warn('Failed to read/write startup announcement flag', error) + } + startupAnnouncementModal.value?.show() +} + // ── Drop import system ────────────────────────────────────────────────── const dropImport = useDropImport({ notificationManager, @@ -2167,6 +2182,7 @@ provideAppUpdateDownloadProgress(appUpdateDownload) +
+import { ExternalIcon, UsersIcon, XIcon } from '@modrinth/assets' +import { Avatar, ButtonStyled, NewModal } from '@modrinth/ui' +import { openUrl } from '@tauri-apps/plugin-opener' +import { ref } from 'vue' + +import { teamMembers } from '@/data/about' + +const modal = ref>() + +const SERVER_IPS: { label: string; host: string }[] = [ + { label: '直连 IPv4', host: 'slv4.starlight.cool' }, + { label: '直连 IPv6', host: 'slv6.starlight.cool' }, + { label: '北方代理 IPv4', host: 'north.starlight.cool' }, + { label: '南方代理 IPv4', host: 'south.starlight.cool' }, + { label: '美国代理 IPv4', host: 'usa.starlight.cool' }, +] + +const RULES_URL = 'https://kdocs.cn/l/cmT6lVdryHJu' +const QQ_GROUP = '535392227' + +function show() { + modal.value?.show() +} + +function hide() { + modal.value?.hide() +} + +function openLink(url: string) { + void openUrl(url) +} + + +