From 917740ca07bed7908b7f6b59531a6a31b3e37c96 Mon Sep 17 00:00:00 2001 From: digua Date: Thu, 30 Jul 2026 16:01:18 +0800 Subject: [PATCH] fix(home): prioritize agreement before changelog Run the automatic changelog check only after the current agreement is already accepted or the user accepts it during startup. This prevents upgraded users from seeing overlapping modals and marking release notes as read too early. --- src/components/home/AgreementModal.vue | 5 +++++ src/components/home/ChangelogModal.vue | 14 ++------------ src/components/home/onboardingFlow.test.ts | 16 +++++++++++++++- src/components/home/onboardingFlow.ts | 16 ++++++++++++++++ src/pages/home/index.vue | 17 ++++++++++++++--- 5 files changed, 52 insertions(+), 16 deletions(-) diff --git a/src/components/home/AgreementModal.vue b/src/components/home/AgreementModal.vue index d75f2347..e0c0cd2d 100644 --- a/src/components/home/AgreementModal.vue +++ b/src/components/home/AgreementModal.vue @@ -13,6 +13,10 @@ const { t } = useI18n() const settingsStore = useSettingsStore() const { locale } = storeToRefs(settingsStore) +const emit = defineEmits<{ + accepted: [] +}>() + const AGREEMENT_VERSION = '3.0' const AGREEMENT_KEY = 'chatlab_agreement_version' @@ -51,6 +55,7 @@ const renderedContent = computed(() => md.render(agreementText.value)) function handleAgree() { localStorage.setItem(AGREEMENT_KEY, AGREEMENT_VERSION) isOpen.value = false + emit('accepted') } function handleDisagree() { diff --git a/src/components/home/ChangelogModal.vue b/src/components/home/ChangelogModal.vue index 37bac4fe..10404fbe 100644 --- a/src/components/home/ChangelogModal.vue +++ b/src/components/home/ChangelogModal.vue @@ -1,5 +1,5 @@