From aa4e1e9947007db38db50cf18adf748cf77a6b95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E6=B1=80=E5=B2=9A?= Date: Mon, 9 Feb 2026 17:11:13 +0800 Subject: [PATCH 01/19] =?UTF-8?q?onboarding:=20=E9=80=89=E9=A1=B9=E5=AD=97?= =?UTF-8?q?=E4=BD=93=E4=B8=8E=E9=97=AE=E9=A2=98=E4=B8=80=E8=87=B4=E3=80=81?= =?UTF-8?q?=E5=BA=95=E9=83=A8=E9=97=B4=E8=B7=9D=E3=80=81=E6=8F=90=E9=86=92?= =?UTF-8?q?=E9=A1=B5=E6=96=87=E6=A1=88=E4=B8=8E=E7=A7=BB=E9=99=A4=E5=BA=95?= =?UTF-8?q?=E9=83=A8=20Skip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .../onboarding/IntentSelectionStep.tsx | 17 +++++++++------- .../onboarding/OnboardingLayout.tsx | 6 +++--- client/components/onboarding/ReminderStep.tsx | 20 ++----------------- .../components/onboarding/SelectionStep.tsx | 11 +++++----- client/constants/OnboardingTheme.ts | 7 +++++++ client/src/i18n/locales/all.json | 14 ++++++------- 6 files changed, 35 insertions(+), 40 deletions(-) diff --git a/client/components/onboarding/IntentSelectionStep.tsx b/client/components/onboarding/IntentSelectionStep.tsx index 6ecf290..bc46871 100644 --- a/client/components/onboarding/IntentSelectionStep.tsx +++ b/client/components/onboarding/IntentSelectionStep.tsx @@ -1,8 +1,7 @@ import React from 'react'; -import { View, StyleSheet, TouchableOpacity } from 'react-native'; +import { View, StyleSheet, TouchableOpacity, Text } from 'react-native'; import { useTranslation } from 'react-i18next'; -import { SerifText } from './SerifText'; -import { OnboardingColors } from '@/constants/OnboardingTheme'; +import { OnboardingColors, OnboardingFont } from '@/constants/OnboardingTheme'; export const INTENTS = [ { id: 'love', labelKey: 'intent.love', icon: '❤️' }, @@ -20,7 +19,7 @@ export function IntentSelectionStep({ selectedIds, onToggle }: IntentSelectionSt const { t } = useTranslation(); return ( - {t('intent.title')} + {t('intent.title')} {INTENTS.map((intent) => { @@ -35,10 +34,10 @@ export function IntentSelectionStep({ selectedIds, onToggle }: IntentSelectionSt onPress={() => onToggle(intent.id)} activeOpacity={0.7} > - {intent.icon} - + {intent.icon} + {t(intent.labelKey)} - + ); })} @@ -56,6 +55,8 @@ const styles = StyleSheet.create({ fontSize: 24, marginBottom: 40, textAlign: 'center', + fontFamily: OnboardingFont.question, + color: OnboardingColors.textPrimary, }, grid: { flexDirection: 'row', @@ -86,10 +87,12 @@ const styles = StyleSheet.create({ }, icon: { fontSize: 32, + fontFamily: OnboardingFont.question, }, label: { fontSize: 18, color: OnboardingColors.textPrimary, + fontFamily: OnboardingFont.question, }, labelSelected: { fontWeight: 'bold', diff --git a/client/components/onboarding/OnboardingLayout.tsx b/client/components/onboarding/OnboardingLayout.tsx index 5b864dd..3a7913b 100644 --- a/client/components/onboarding/OnboardingLayout.tsx +++ b/client/components/onboarding/OnboardingLayout.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { View, StyleSheet, SafeAreaView, TouchableOpacity, StatusBar, Text, Image, Platform } from 'react-native'; import { useTranslation } from 'react-i18next'; -import { OnboardingColors } from '@/constants/OnboardingTheme'; +import { OnboardingColors, OnboardingFont } from '@/constants/OnboardingTheme'; interface OnboardingLayoutProps { children: React.ReactNode; @@ -119,13 +119,13 @@ const styles = StyleSheet.create({ questionTitle: { fontSize: 22, color: OnboardingColors.questionTitle, - fontFamily: Platform.OS === 'ios' ? 'PingFang TC' : 'sans-serif', + fontFamily: OnboardingFont.question, flex: 1, }, progressText: { fontSize: 18, color: OnboardingColors.textProgress, - fontFamily: Platform.OS === 'ios' ? 'PingFang TC' : 'sans-serif', + fontFamily: OnboardingFont.question, marginLeft: 10, }, content: { diff --git a/client/components/onboarding/ReminderStep.tsx b/client/components/onboarding/ReminderStep.tsx index b660495..7c2cea6 100644 --- a/client/components/onboarding/ReminderStep.tsx +++ b/client/components/onboarding/ReminderStep.tsx @@ -11,10 +11,10 @@ interface ReminderStepProps { value: number; onChange: (value: number) => void; onFinish: () => void; - onSkip: () => void; + onSkip?: () => void; } -export function ReminderStep({ value, onChange, onFinish, onSkip }: ReminderStepProps) { +export function ReminderStep({ value, onChange, onFinish }: ReminderStepProps) { const { t } = useTranslation(); const insets = useSafeAreaInsets(); @@ -48,10 +48,6 @@ export function ReminderStep({ value, onChange, onFinish, onSkip }: ReminderStep - - - {t('onboarding.skip')} - ); @@ -93,17 +89,5 @@ const styles = StyleSheet.create({ footer: { position: 'absolute', alignItems: 'center', - } - , - skipBtn: { - marginTop: 14, - paddingVertical: 10, - paddingHorizontal: 18, - }, - skipText: { - color: OnboardingColors.textPrimary, - fontSize: 15, - fontWeight: '600', - opacity: 0.85, }, }); diff --git a/client/components/onboarding/SelectionStep.tsx b/client/components/onboarding/SelectionStep.tsx index 2bb9e25..2773aa9 100644 --- a/client/components/onboarding/SelectionStep.tsx +++ b/client/components/onboarding/SelectionStep.tsx @@ -1,8 +1,7 @@ import React from 'react'; -import { View, StyleSheet, TouchableOpacity, ScrollView } from 'react-native'; +import { View, StyleSheet, TouchableOpacity, ScrollView, Text } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; -import { OnboardingColors } from '@/constants/OnboardingTheme'; -import { SerifText } from './SerifText'; +import { OnboardingColors, OnboardingFont } from '@/constants/OnboardingTheme'; import SelectedIcon from '@/assets/images/icon/selected_icon.svg'; import BtnNotClicked from '@/assets/images/icon/btn_Notclicked.svg'; import BtnClicked from '@/assets/images/icon/btn_clicked.svg'; @@ -25,7 +24,8 @@ export function SelectionStep({ options, selectedIds, onToggle, onNext, onSkip } const insets = useSafeAreaInsets(); const footerBottom = insets.bottom + 16; const footerButtonHeight = 57; - const footerPaddingBottom = footerBottom + footerButtonHeight + 24; + // 底部留白加大,避免最后一项与按钮边框视觉重叠 + const footerPaddingBottom = footerBottom + footerButtonHeight + 40; return ( @@ -43,7 +43,7 @@ export function SelectionStep({ options, selectedIds, onToggle, onNext, onSkip } onPress={() => onToggle(option.id)} activeOpacity={0.7} > - {option.label} + {option.label} {isSelected && ( @@ -95,6 +95,7 @@ const styles = StyleSheet.create({ fontSize: 18, color: OnboardingColors.textPrimary, fontWeight: '500', + fontFamily: OnboardingFont.question, flex: 1, }, iconWrapper: { diff --git a/client/constants/OnboardingTheme.ts b/client/constants/OnboardingTheme.ts index 871489f..022e7ef 100644 --- a/client/constants/OnboardingTheme.ts +++ b/client/constants/OnboardingTheme.ts @@ -1,3 +1,10 @@ +import { Platform } from 'react-native'; + +/** 与 onboarding 问题标题一致的字体(PingFang TC / sans-serif) */ +export const OnboardingFont = { + question: Platform.OS === 'ios' ? 'PingFang TC' : 'sans-serif', +}; + export const OnboardingColors = { background: '#FFF4EA', textPrimary: '#772F00', diff --git a/client/src/i18n/locales/all.json b/client/src/i18n/locales/all.json index aa4fddc..763335b 100644 --- a/client/src/i18n/locales/all.json +++ b/client/src/i18n/locales/all.json @@ -14,7 +14,7 @@ "progress": "{{current}}/{{total}}", "next": "Next", "skip": "Skip", - "skipAll": "Skip onboarding", + "skipAll": "Skip", "q1Title": "How are you feeling lately?", "q1Desc": "No right or wrong. You can skip and adjust later.", "q2Title": "What kind of support do you want?", @@ -26,9 +26,9 @@ }, "onboardingSurvey": { "steps": { - "name": { "title": "What do you want to be called?", "placeholder": "Mama" }, + "name": { "title": "What should we call you?", "placeholder": "Mama" }, "status": { - "title": "Which stage of motherhood are you in?", + "title": "Where are you at right now?", "options": { "pregnant": "Pregnant / Preparing", "has_kids": "Parenting", @@ -66,7 +66,7 @@ "balance": "Rest & balance" } }, - "reminder": { "title": "How many reminders do you want per day?" } + "reminder": { "title": "How often would you like a gentle reminder?" } } }, "intent": { @@ -142,13 +142,13 @@ "widgetDesc": "Put gentle reminders on your home screen: long-press → tap “+” → search “Mindfulness” → add a size you like." }, "consent": { - "title": "You Are Perfect.", - "subtitle": "Everything\nWill Be Better.", + "title": "Hey mama.", + "subtitle": "You’re doing okay\nright now.", "agree": "Agree & Continue", "privacy": "Privacy Policy", "terms": "Terms of Use", "notice": "By continuing, you agree to the Privacy Policy and Terms of Use.", - "noticeRich": "By continuing, you agree to the {{privacyLabel}}{{privacySuffix}} and {{termsLabel}}{{termsSuffix}}.", + "noticeRich": "By continuing,\nyou agree to the {{privacyLabel}}{{privacySuffix}} and {{termsLabel}}{{termsSuffix}}.", "linkUnavailable": "Failed to load the policy link. Please check your network and try again.", "linkUnavailableDev": "Failed to load the policy link. Please check your network or API_BASE_URL: {{baseUrl}}", "linkLoadingSuffix": " (loading…)" -- 2.49.1 From b4ec17fcacdf8a6a692688495a5e6eb6f493f236 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E6=B1=80=E5=B2=9A?= Date: Mon, 9 Feb 2026 17:33:53 +0800 Subject: [PATCH 02/19] =?UTF-8?q?onboarding:=20=E8=BD=AC=E5=9C=BA=E5=8A=A8?= =?UTF-8?q?=E7=94=BB=E3=80=81=E5=90=8D=E5=AD=97=E6=AD=A5=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=B7=B3=E9=A1=B5=E3=80=81=E6=A0=87=E9=A2=98?= =?UTF-8?q?=E4=B8=AA=E6=80=A7=E5=8C=96=E6=8B=9B=E5=91=BC=E8=AF=AD=E3=80=81?= =?UTF-8?q?Skip/=E6=8F=90=E9=86=92=E6=AD=A5=E7=AD=89=E6=96=87=E6=A1=88?= =?UTF-8?q?=E4=B8=8E=E4=BA=A4=E4=BA=92=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- client/app/(onboarding)/onboarding.tsx | 3 +- .../components/onboarding/NameInputStep.tsx | 3 +- .../onboarding/OnboardingLayout.tsx | 86 ++++++++++++++++--- client/components/onboarding/ReminderStep.tsx | 8 +- .../components/onboarding/SelectionStep.tsx | 19 ++-- client/src/i18n/locales/all.json | 6 +- client/src/i18n/locales/en.json | 3 +- client/src/i18n/locales/es.json | 3 +- client/src/i18n/locales/pt.json | 3 +- client/src/i18n/locales/zh-CN.json | 3 +- client/src/i18n/locales/zh-TW.json | 3 +- 11 files changed, 105 insertions(+), 35 deletions(-) diff --git a/client/app/(onboarding)/onboarding.tsx b/client/app/(onboarding)/onboarding.tsx index 3f3ee98..7f7c3df 100644 --- a/client/app/(onboarding)/onboarding.tsx +++ b/client/app/(onboarding)/onboarding.tsx @@ -213,6 +213,7 @@ export default function OnboardingScreen() { onSkip={onSkip} onBack={onBack} showBackButton={stepIndex > 0} + userName={name} > {currentStep.type === 'name' && ( { diff --git a/client/components/onboarding/NameInputStep.tsx b/client/components/onboarding/NameInputStep.tsx index c367aef..46724a2 100644 --- a/client/components/onboarding/NameInputStep.tsx +++ b/client/components/onboarding/NameInputStep.tsx @@ -95,8 +95,7 @@ export function NameInputStep({ value, onChangeText, onNext }: NameInputStepProp blurOnSubmit={true} onSubmitEditing={() => { Keyboard.dismiss(); - // 有输入时,“完成”直接进入下一步,避免真机卡在键盘上 - if (value.trim().length > 0) onNext(); + // 不再自動跳頁,僅收起鍵盤;前進需點擊底部 ➡️ }} /> diff --git a/client/components/onboarding/OnboardingLayout.tsx b/client/components/onboarding/OnboardingLayout.tsx index 3a7913b..a20d685 100644 --- a/client/components/onboarding/OnboardingLayout.tsx +++ b/client/components/onboarding/OnboardingLayout.tsx @@ -1,8 +1,11 @@ -import React from 'react'; -import { View, StyleSheet, SafeAreaView, TouchableOpacity, StatusBar, Text, Image, Platform } from 'react-native'; +import React, { useRef, useEffect } from 'react'; +import { View, StyleSheet, SafeAreaView, TouchableOpacity, StatusBar, Text, Image, Platform, Animated, Easing } from 'react-native'; import { useTranslation } from 'react-i18next'; import { OnboardingColors, OnboardingFont } from '@/constants/OnboardingTheme'; +const TRANSITION_OFFSET = 24; +const TRANSITION_DURATION = 280; + interface OnboardingLayoutProps { children: React.ReactNode; title?: string; @@ -11,6 +14,8 @@ interface OnboardingLayoutProps { onSkip: () => void; onBack?: () => void; showBackButton?: boolean; + /** 用户名字,仅在名字步骤之后的第一个问题(currentStep === 1)且非空时显示招呼语 */ + userName?: string; } export function OnboardingLayout({ @@ -20,9 +25,48 @@ export function OnboardingLayout({ totalSteps, onSkip, onBack, - showBackButton = false + showBackButton = false, + userName = '', }: OnboardingLayoutProps) { const { t } = useTranslation(); + const showGreeting = currentStep === 1 && userName.trim().length > 0; + const displayName = userName.trim(); + const prevStepRef = useRef(currentStep); + const isFirstRenderRef = useRef(true); + const translateX = useRef(new Animated.Value(0)).current; + const opacity = useRef(new Animated.Value(1)).current; + + useEffect(() => { + if (isFirstRenderRef.current) { + isFirstRenderRef.current = false; + prevStepRef.current = currentStep; + return; + } + if (prevStepRef.current === currentStep) return; + + const direction = currentStep > prevStepRef.current ? 'forward' : 'back'; + prevStepRef.current = currentStep; + + const startX = direction === 'forward' ? TRANSITION_OFFSET : -TRANSITION_OFFSET; + translateX.setValue(startX); + opacity.setValue(0.72); + + Animated.parallel([ + Animated.timing(translateX, { + toValue: 0, + duration: TRANSITION_DURATION, + useNativeDriver: true, + easing: Easing.out(Easing.cubic), + }), + Animated.timing(opacity, { + toValue: 1, + duration: TRANSITION_DURATION, + useNativeDriver: true, + easing: Easing.out(Easing.cubic), + }), + ]).start(); + }, [currentStep, translateX, opacity]); + return ( @@ -49,16 +93,29 @@ export function OnboardingLayout({ - {/* Title & Progress Row */} + {/* Title & Progress Row(名字步骤后第一步且名字非空时显示招呼语 + 问题) */} - {title} + + {showGreeting && ( + {t('onboardingSurvey.greeting', { name: displayName })} + )} + {title} + ({currentStep}/{totalSteps}) - {/* Content */} - + {/* Content:step 切换时滑动 + 淡入 */} + {children} - + ); @@ -114,13 +171,22 @@ const styles = StyleSheet.create({ alignItems: 'flex-end', paddingHorizontal: 20, marginTop: 20, - marginBottom: 20, + marginBottom: 8, + }, + titleBlock: { + flex: 1, + justifyContent: 'flex-end', + }, + greetingText: { + fontSize: 22, + color: OnboardingColors.questionTitle, + fontFamily: OnboardingFont.question, + marginBottom: 4, }, questionTitle: { fontSize: 22, color: OnboardingColors.questionTitle, fontFamily: OnboardingFont.question, - flex: 1, }, progressText: { fontSize: 18, diff --git a/client/components/onboarding/ReminderStep.tsx b/client/components/onboarding/ReminderStep.tsx index 7c2cea6..a48b15a 100644 --- a/client/components/onboarding/ReminderStep.tsx +++ b/client/components/onboarding/ReminderStep.tsx @@ -19,8 +19,8 @@ export function ReminderStep({ value, onChange, onFinish }: ReminderStepProps) { const insets = useSafeAreaInsets(); const handleReduce = () => { - // 允许 0~5;0 表示关闭每日提醒 - if (value > 0) onChange(value - 1); + // 本页最小为 1;不接收提醒请使用右上角 Skip + if (value > 1) onChange(value - 1); }; const handleAdd = () => { @@ -36,7 +36,9 @@ export function ReminderStep({ value, onChange, onFinish }: ReminderStepProps) { {value} - {t('dailyReminder.timesUnit')} + + {value === 1 ? t('dailyReminder.timesUnitSingular') : t('dailyReminder.timesUnit')} + diff --git a/client/components/onboarding/SelectionStep.tsx b/client/components/onboarding/SelectionStep.tsx index 2773aa9..2b9e989 100644 --- a/client/components/onboarding/SelectionStep.tsx +++ b/client/components/onboarding/SelectionStep.tsx @@ -2,7 +2,6 @@ import React from 'react'; import { View, StyleSheet, TouchableOpacity, ScrollView, Text } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { OnboardingColors, OnboardingFont } from '@/constants/OnboardingTheme'; -import SelectedIcon from '@/assets/images/icon/selected_icon.svg'; import BtnNotClicked from '@/assets/images/icon/btn_Notclicked.svg'; import BtnClicked from '@/assets/images/icon/btn_clicked.svg'; @@ -39,16 +38,11 @@ export function SelectionStep({ options, selectedIds, onToggle, onNext, onSkip } return ( onToggle(option.id)} activeOpacity={0.7} > {option.label} - {isSelected && ( - - - - )} ); })} @@ -67,7 +61,7 @@ export function SelectionStep({ options, selectedIds, onToggle, onNext, onSkip } const styles = StyleSheet.create({ container: { flex: 1, - paddingTop: 20, + paddingTop: 8, }, scroll: { flex: 1, @@ -82,7 +76,7 @@ const styles = StyleSheet.create({ borderRadius: 20, flexDirection: 'row', alignItems: 'center', - justifyContent: 'space-between', + justifyContent: 'center', paddingHorizontal: 24, marginBottom: 12, shadowColor: '#000', @@ -91,15 +85,14 @@ const styles = StyleSheet.create({ shadowRadius: 10, elevation: 2, }, + optionCardSelected: { + backgroundColor: OnboardingColors.cardSelected, + }, optionText: { fontSize: 18, color: OnboardingColors.textPrimary, fontWeight: '500', fontFamily: OnboardingFont.question, - flex: 1, - }, - iconWrapper: { - marginLeft: 10, }, footer: { position: 'absolute', diff --git a/client/src/i18n/locales/all.json b/client/src/i18n/locales/all.json index 763335b..054f664 100644 --- a/client/src/i18n/locales/all.json +++ b/client/src/i18n/locales/all.json @@ -25,6 +25,7 @@ "q4Desc": "You can skip. We’ll stay with you along the way." }, "onboardingSurvey": { + "greeting": "Hi {{name}},", "steps": { "name": { "title": "What should we call you?", "placeholder": "Mama" }, "status": { @@ -115,6 +116,7 @@ "dailyReminder": { "title": "Daily Reminder", "timesUnit": "times", + "timesUnitSingular": "time", "pushLabel": "Push Reminder", "ok": "Ok", "minus": "Decrease", @@ -183,7 +185,7 @@ "progress": "{{current}}/{{total}}", "next": "下一步", "skip": "跳過", - "skipAll": "跳過整個引導", + "skipAll": "跳過", "q1Title": "你最近的感受更接近哪一種?", "q1Desc": "沒有對錯,你可以跳過,之後也能慢慢調整。", "q2Title": "你更希望獲得哪種支持?", @@ -194,6 +196,7 @@ "q4Desc": "你可以直接跳過,我們會在之後繼續陪你。" }, "onboardingSurvey": { + "greeting": "{{name}},你好", "steps": { "name": { "title": "我可以怎麼稱呼你?", "placeholder": "媽媽" }, "status": { @@ -284,6 +287,7 @@ "dailyReminder": { "title": "每日提醒", "timesUnit": "次", + "timesUnitSingular": "次", "pushLabel": "推送提醒", "ok": "確定", "minus": "減少次數", diff --git a/client/src/i18n/locales/en.json b/client/src/i18n/locales/en.json index ec20c6a..4dbbf18 100644 --- a/client/src/i18n/locales/en.json +++ b/client/src/i18n/locales/en.json @@ -11,7 +11,7 @@ "progress": "{{current}}/{{total}}", "next": "Next", "skip": "Skip", - "skipAll": "Skip onboarding", + "skipAll": "Skip", "q1Title": "How are you feeling lately?", "q1Desc": "No right or wrong. You can skip and adjust later.", "q2Title": "What kind of support do you want?", @@ -59,6 +59,7 @@ "dailyReminder": { "title": "Daily Reminder", "timesUnit": "times", + "timesUnitSingular": "time", "pushLabel": "Push Reminder", "ok": "Ok", "minus": "Decrease", diff --git a/client/src/i18n/locales/es.json b/client/src/i18n/locales/es.json index e6d1b81..2ca7f78 100644 --- a/client/src/i18n/locales/es.json +++ b/client/src/i18n/locales/es.json @@ -9,7 +9,7 @@ "progress": "{{current}}/{{total}}", "next": "Siguiente", "skip": "Saltar", - "skipAll": "Saltar introducción", + "skipAll": "Saltar", "q1Title": "¿Cómo te sientes últimamente?", "q1Desc": "No hay respuestas correctas. Puedes saltar y ajustar después.", "q2Title": "¿Qué tipo de apoyo quieres?", @@ -57,6 +57,7 @@ "dailyReminder": { "title": "Recordatorio diario", "timesUnit": "veces", + "timesUnitSingular": "vez", "pushLabel": "Recordatorio Push", "ok": "Ok", "minus": "Disminuir", diff --git a/client/src/i18n/locales/pt.json b/client/src/i18n/locales/pt.json index a09aa32..d284e44 100644 --- a/client/src/i18n/locales/pt.json +++ b/client/src/i18n/locales/pt.json @@ -9,7 +9,7 @@ "progress": "{{current}}/{{total}}", "next": "Próximo", "skip": "Pular", - "skipAll": "Pular introdução", + "skipAll": "Pular", "q1Title": "Como você tem se sentido ultimamente?", "q1Desc": "Não há certo ou errado. Você pode pular e ajustar depois.", "q2Title": "Que tipo de apoio você quer?", @@ -57,6 +57,7 @@ "dailyReminder": { "title": "Lembrete diário", "timesUnit": "vezes", + "timesUnitSingular": "vez", "pushLabel": "Lembrete Push", "ok": "Ok", "minus": "Diminuir", diff --git a/client/src/i18n/locales/zh-CN.json b/client/src/i18n/locales/zh-CN.json index f774875..6dbc785 100644 --- a/client/src/i18n/locales/zh-CN.json +++ b/client/src/i18n/locales/zh-CN.json @@ -12,7 +12,7 @@ "progress": "{{current}}/{{total}}", "next": "下一步", "skip": "跳过", - "skipAll": "跳过整个引导", + "skipAll": "跳过", "q1Title": "你最近的感受更接近哪一种?", "q1Desc": "没有对错,你可以跳过,之后也可以慢慢调整。", "q2Title": "你更希望获得哪种支持?", @@ -60,6 +60,7 @@ "dailyReminder": { "title": "每日提醒", "timesUnit": "次", + "timesUnitSingular": "次", "pushLabel": "推送提醒", "ok": "确定", "minus": "减少次数", diff --git a/client/src/i18n/locales/zh-TW.json b/client/src/i18n/locales/zh-TW.json index 4e91b8f..b773ef7 100644 --- a/client/src/i18n/locales/zh-TW.json +++ b/client/src/i18n/locales/zh-TW.json @@ -9,7 +9,7 @@ "progress": "{{current}}/{{total}}", "next": "下一步", "skip": "跳過", - "skipAll": "跳過整個引導", + "skipAll": "跳過", "q1Title": "你最近的感受更接近哪一種?", "q1Desc": "沒有對錯,你可以跳過,之後也能慢慢調整。", "q2Title": "你更希望獲得哪種支持?", @@ -57,6 +57,7 @@ "dailyReminder": { "title": "每日提醒", "timesUnit": "次", + "timesUnitSingular": "次", "pushLabel": "推送提醒", "ok": "確定", "minus": "減少次數", -- 2.49.1 From ce018880f47862948d7d94637899b9a3d294526f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E6=B1=80=E5=B2=9A?= Date: Mon, 9 Feb 2026 23:05:17 +0800 Subject: [PATCH 03/19] =?UTF-8?q?fix(i18n):=20=E7=B9=81=E4=B8=AD=E9=96=8B?= =?UTF-8?q?=E5=B1=8F=20consent=20=E6=96=87=E6=A1=88=E4=B8=8D=E7=94=9F?= =?UTF-8?q?=E6=95=88=20-=20=E5=AF=AB=E6=AD=BB=E7=B9=81=E4=B8=AD=E6=96=87?= =?UTF-8?q?=E6=A1=88=E3=80=81=E6=B8=85=E7=90=86=E8=85=B3=E6=9C=AC=E3=80=81?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - splash: 繁中 consent 使用元件內 ZH_TW_CONSENT,避免 bundle 快取 - splash: 使用 isTraditionalChineseLocaleTag 判斷繁中 - i18n: 註解與 __DEV__ debug log - package: clean:cache, start:clean, ios:clean, clean:ios-build - ALL_COPY: 故障排除與 consent 只改 zh-TW.json 說明 - spec_kit: Splash Consent overflow 記錄排查結論 Co-authored-by: Cursor --- client/app/(onboarding)/onboarding.tsx | 25 +- client/app/(splash)/splash.tsx | 40 +- client/ios/Podfile.lock | 552 +++---- client/ios/client.xcodeproj/project.pbxproj | 29 +- client/package-lock.json | 1628 ++++++++++++++++++- client/package.json | 6 +- client/src/i18n/ALL_COPY.md | 29 +- client/src/i18n/index.ts | 19 +- client/src/i18n/locales/all.json | 18 +- client/src/i18n/locales/zh-TW.json | 100 +- spec_kit/Splash Consent/overflow.md | 31 + 11 files changed, 2127 insertions(+), 350 deletions(-) create mode 100644 spec_kit/Splash Consent/overflow.md diff --git a/client/app/(onboarding)/onboarding.tsx b/client/app/(onboarding)/onboarding.tsx index 7f7c3df..29664fe 100644 --- a/client/app/(onboarding)/onboarding.tsx +++ b/client/app/(onboarding)/onboarding.tsx @@ -175,18 +175,17 @@ export default function OnboardingScreen() { } }; - const onSkip = async () => { - // 跳过整个 Onboarding:仍生成一个“全跳过”的最小画像,保证下游可用 - const scoringProfile = buildUserProfileFromQuestionnaire({}); - await setUserProfileScoring(scoringProfile); - - // 同步到 App Group:供 iOS Widget 使用(失败不阻塞) - await syncWidgetConfig(); - await syncWidgetUserProfileFromScoring(scoringProfile); - - // 标记已完成,避免下次启动再次进入 Onboarding - await setOnboardingCompleted(true); - router.replace('/(app)/home'); + /** 只跳過當前這一步(不填/不選當前題,進入下一步) */ + const handleSkipCurrentStep = () => { + if (currentStep.type === 'name') { + onNext(); + } else if (currentStep.type === 'selection') { + setSelections((prev) => ({ ...prev, [currentStep.id]: [] })); + onNext(); + } else if (currentStep.type === 'reminder') { + setReminderTimes(0); + onFinish(); + } }; // 题目为多选:点击切换选中状态 @@ -210,7 +209,7 @@ export default function OnboardingScreen() { title={currentTitle} currentStep={stepIndex} totalSteps={STEPS.length - 1} - onSkip={onSkip} + onSkip={handleSkipCurrentStep} onBack={onBack} showBackButton={stepIndex > 0} userName={name} diff --git a/client/app/(splash)/splash.tsx b/client/app/(splash)/splash.tsx index bc5fa3e..129f329 100644 --- a/client/app/(splash)/splash.tsx +++ b/client/app/(splash)/splash.tsx @@ -8,6 +8,7 @@ import { setConsentAccepted, getConsentAccepted } from '../../src/storage/appSto import { fetchLegalLinks } from '@/src/services/legalApi'; import { getOnboardingCompleted } from '@/src/storage/appStorage'; import { API_BASE_URL } from '@/src/constants/env'; +import { isTraditionalChineseLocaleTag } from '@/src/i18n/locale'; // 导入 SVG 组件 import FlowersBg from '../../assets/images/index/flowers_endbg.svg'; @@ -15,10 +16,30 @@ import WelcomeBtn from '../../assets/images/index/welcome_btn.svg'; const { width, height } = Dimensions.get('window'); +// 繁中開屏 consent 文案:寫死在元件內,避免 Metro/iOS bundle 快取導致永遠顯示舊文案。 +// 若需修改,請改這裡並同步 client/src/i18n/locales/zh-TW.json 的 consent 區塊。 +const ZH_TW_CONSENT = { + title: '我們知道,', + subtitle: '當媽媽很不容易。', + subtitleSecondary: '這裡給你一些溫柔的肯定與提醒', +}; + export default function SplashScreen() { const router = useRouter(); - const { t } = useTranslation(); + const { t, i18n } = useTranslation(); const [showConsent, setShowConsent] = useState(false); + + // 繁中時強制使用上方常數(含 zh-TW / zh-Hant / zh-Hant-TW),其餘用 i18n + const isZhTW = isTraditionalChineseLocaleTag(i18n.language || ''); + const title = isZhTW ? ZH_TW_CONSENT.title : t('consent.title'); + const subtitle = isZhTW ? ZH_TW_CONSENT.subtitle : t('consent.subtitle'); + const subtitleSecondary = isZhTW ? ZH_TW_CONSENT.subtitleSecondary : t('consent.subtitleSecondary'); + + useEffect(() => { + if (typeof __DEV__ !== 'undefined' && __DEV__ && showConsent) { + console.log('[i18n consent] language=', i18n.language, 'title=', title, 'subtitle=', subtitle); + } + }, [showConsent, i18n.language, title, subtitle]); const [links, setLinks] = useState<{ privacy?: string; terms?: string }>({}); const [linksLoading, setLinksLoading] = useState(false); const mountedRef = useRef(true); @@ -126,13 +147,16 @@ export default function SplashScreen() { /> - {/* 文案内容 */} + {/* 文案内容:主標題兩行 + 可選二級標題(字號更小、顏色更淺);繁中為元件內常數,其餘用 i18n */} - {t('consent.title')} + {title} {'\n'} - {t('consent.subtitle')} + {subtitle} + {subtitleSecondary ? ( + {subtitleSecondary} + ) : null} @@ -213,6 +237,14 @@ const styles = StyleSheet.create({ fontWeight: '600', fontFamily: Platform.OS === 'ios' ? 'STIX Two Text' : 'serif', }, + consentSubtitleSecondary: { + marginTop: 12, + fontSize: 16, + lineHeight: 22, + color: 'rgba(119, 47, 0, 0.6)', + textAlign: 'center', + fontFamily: Platform.OS === 'ios' ? 'STIX Two Text' : 'serif', + }, bottomContainer: { position: 'absolute', bottom: 60, diff --git a/client/ios/Podfile.lock b/client/ios/Podfile.lock index 4a3e609..92b7591 100644 --- a/client/ios/Podfile.lock +++ b/client/ios/Podfile.lock @@ -2240,330 +2240,330 @@ PODS: - Yoga (0.0.0) DEPENDENCIES: - - "EXApplication (from `../node_modules/.pnpm/expo-application@7.0.8_expo@54.0.32/node_modules/expo-application/ios`)" - - "EXConstants (from `../node_modules/.pnpm/expo-constants@18.0.13_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0_/node_modules/expo-constants/ios`)" - - "EXJSONUtils (from `../node_modules/.pnpm/expo-json-utils@0.15.0/node_modules/expo-json-utils/ios`)" - - "EXManifests (from `../node_modules/.pnpm/expo-manifests@1.0.10_expo@54.0.32/node_modules/expo-manifests/ios`)" - - "EXNotifications (from `../node_modules/.pnpm/expo-notifications@0.32.16_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@1_nvlvke5tn7wk5pigfsu7j4ieeq/node_modules/expo-notifications/ios`)" - - "Expo (from `../node_modules/.pnpm/expo@54.0.32_@babel+core@7.28.6_@expo+metro-runtime@6.1.2_expo-router@6.0.22_react-native@0.8_7rhpxisdkrzvrgzbu7ct455kta/node_modules/expo`)" - - "expo-dev-client (from `../node_modules/.pnpm/expo-dev-client@6.0.20_expo@54.0.32/node_modules/expo-dev-client/ios`)" - - "expo-dev-launcher (from `../node_modules/.pnpm/expo-dev-launcher@6.0.20_expo@54.0.32/node_modules/expo-dev-launcher`)" - - "expo-dev-menu (from `../node_modules/.pnpm/expo-dev-menu@7.0.18_expo@54.0.32/node_modules/expo-dev-menu`)" - - "expo-dev-menu-interface (from `../node_modules/.pnpm/expo-dev-menu-interface@2.0.0_expo@54.0.32/node_modules/expo-dev-menu-interface/ios`)" - - "ExpoAsset (from `../node_modules/.pnpm/expo-asset@12.0.12_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0__react@19.1.0/node_modules/expo-asset/ios`)" - - "ExpoCrypto (from `../node_modules/.pnpm/expo-crypto@15.0.8_expo@54.0.32/node_modules/expo-crypto/ios`)" - - "ExpoDevice (from `../node_modules/.pnpm/expo-device@8.0.10_expo@54.0.32/node_modules/expo-device/ios`)" - - "ExpoFileSystem (from `../node_modules/.pnpm/expo-file-system@19.0.21_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0_/node_modules/expo-file-system/ios`)" - - "ExpoFont (from `../node_modules/.pnpm/expo-font@14.0.11_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0__react@19.1.0/node_modules/expo-font/ios`)" - - "ExpoHead (from `../node_modules/.pnpm/expo-router@6.0.22_@expo+metro-runtime@6.1.2_@types+react@19.1.17_expo-constants@18.0.13_expo_mxedi6ntnfsoyp6zijog4pvdsy/node_modules/expo-router/ios`)" - - "ExpoKeepAwake (from `../node_modules/.pnpm/expo-keep-awake@15.0.8_expo@54.0.32_react@19.1.0/node_modules/expo-keep-awake/ios`)" - - "ExpoLinearGradient (from `../node_modules/.pnpm/expo-linear-gradient@15.0.8_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@_e6k2hjkd5k4lph2ersbp3gfshy/node_modules/expo-linear-gradient/ios`)" - - "ExpoLinking (from `../node_modules/.pnpm/expo-linking@8.0.11_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0__react@19.1.0/node_modules/expo-linking/ios`)" - - "ExpoLocalization (from `../node_modules/.pnpm/expo-localization@17.0.8_expo@54.0.32_react@19.1.0/node_modules/expo-localization/ios`)" - - "ExpoModulesCore (from `../node_modules/.pnpm/expo-modules-core@3.0.29_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0__react@19.1.0/node_modules/expo-modules-core`)" - - "ExpoSplashScreen (from `../node_modules/.pnpm/expo-splash-screen@31.0.13_expo@54.0.32/node_modules/expo-splash-screen/ios`)" - - "ExpoWebBrowser (from `../node_modules/.pnpm/expo-web-browser@15.0.10_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0_/node_modules/expo-web-browser/ios`)" - - "EXUpdatesInterface (from `../node_modules/.pnpm/expo-updates-interface@2.0.0_expo@54.0.32/node_modules/expo-updates-interface/ios`)" - - "FBLazyVector (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/FBLazyVector`)" - - "hermes-engine (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)" - - "RCTDeprecation (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)" - - "RCTRequired (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Required`)" - - "RCTTypeSafety (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/TypeSafety`)" - - "React (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/`)" - - "React-callinvoker (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/callinvoker`)" - - "React-Core (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/`)" - - "React-Core-prebuilt (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/React-Core-prebuilt.podspec`)" - - "React-Core/RCTWebSocket (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/`)" - - "React-CoreModules (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/React/CoreModules`)" - - "React-cxxreact (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/cxxreact`)" - - "React-debug (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/debug`)" - - "React-defaultsnativemodule (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/nativemodule/defaults`)" - - "React-domnativemodule (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/nativemodule/dom`)" - - "React-Fabric (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon`)" - - "React-FabricComponents (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon`)" - - "React-FabricImage (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon`)" - - "React-featureflags (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/featureflags`)" - - "React-featureflagsnativemodule (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/nativemodule/featureflags`)" - - "React-graphics (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/renderer/graphics`)" - - "React-hermes (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/hermes`)" - - "React-idlecallbacksnativemodule (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`)" - - "React-ImageManager (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)" - - "React-jserrorhandler (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jserrorhandler`)" - - "React-jsi (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsi`)" - - "React-jsiexecutor (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsiexecutor`)" - - "React-jsinspector (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsinspector-modern`)" - - "React-jsinspectorcdp (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsinspector-modern/cdp`)" - - "React-jsinspectornetwork (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsinspector-modern/network`)" - - "React-jsinspectortracing (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsinspector-modern/tracing`)" - - "React-jsitooling (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsitooling`)" - - "React-jsitracing (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/hermes/executor/`)" - - "React-logger (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/logger`)" - - "React-Mapbuffer (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon`)" - - "React-microtasksnativemodule (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)" - - "react-native-safe-area-context (from `../node_modules/.pnpm/react-native-safe-area-context@5.6.2_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1_azuxgonsvxb2yngtegtuvyxcpi/node_modules/react-native-safe-area-context`)" - - "React-NativeModulesApple (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)" - - "React-oscompat (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/oscompat`)" - - "React-perflogger (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/reactperflogger`)" - - "React-performancetimeline (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/performance/timeline`)" - - "React-RCTActionSheet (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/ActionSheetIOS`)" - - "React-RCTAnimation (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/NativeAnimation`)" - - "React-RCTAppDelegate (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/AppDelegate`)" - - "React-RCTBlob (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Blob`)" - - "React-RCTFabric (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/React`)" - - "React-RCTFBReactNativeSpec (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/React`)" - - "React-RCTImage (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Image`)" - - "React-RCTLinking (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/LinkingIOS`)" - - "React-RCTNetwork (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Network`)" - - "React-RCTRuntime (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/React/Runtime`)" - - "React-RCTSettings (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Settings`)" - - "React-RCTText (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Text`)" - - "React-RCTVibration (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Vibration`)" - - "React-rendererconsistency (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/renderer/consistency`)" - - "React-renderercss (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/renderer/css`)" - - "React-rendererdebug (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/renderer/debug`)" - - "React-RuntimeApple (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/runtime/platform/ios`)" - - "React-RuntimeCore (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/runtime`)" - - "React-runtimeexecutor (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/runtimeexecutor`)" - - "React-RuntimeHermes (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/runtime`)" - - "React-runtimescheduler (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)" - - "React-timing (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/timing`)" - - "React-utils (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/utils`)" + - EXApplication (from `../node_modules/expo-application/ios`) + - EXConstants (from `../node_modules/expo-constants/ios`) + - EXJSONUtils (from `../node_modules/expo-json-utils/ios`) + - EXManifests (from `../node_modules/expo-manifests/ios`) + - EXNotifications (from `../node_modules/expo-notifications/ios`) + - Expo (from `../node_modules/expo`) + - expo-dev-client (from `../node_modules/expo-dev-client/ios`) + - expo-dev-launcher (from `../node_modules/expo-dev-launcher`) + - expo-dev-menu (from `../node_modules/expo-dev-menu`) + - expo-dev-menu-interface (from `../node_modules/expo-dev-menu-interface/ios`) + - ExpoAsset (from `../node_modules/expo-asset/ios`) + - ExpoCrypto (from `../node_modules/expo-crypto/ios`) + - ExpoDevice (from `../node_modules/expo-device/ios`) + - ExpoFileSystem (from `../node_modules/expo-file-system/ios`) + - ExpoFont (from `../node_modules/expo-font/ios`) + - ExpoHead (from `../node_modules/expo-router/ios`) + - ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`) + - ExpoLinearGradient (from `../node_modules/expo-linear-gradient/ios`) + - ExpoLinking (from `../node_modules/expo-linking/ios`) + - ExpoLocalization (from `../node_modules/expo-localization/ios`) + - ExpoModulesCore (from `../node_modules/expo-modules-core`) + - ExpoSplashScreen (from `../node_modules/expo-splash-screen/ios`) + - ExpoWebBrowser (from `../node_modules/expo-web-browser/ios`) + - EXUpdatesInterface (from `../node_modules/expo-updates-interface/ios`) + - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) + - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) + - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) + - RCTRequired (from `../node_modules/react-native/Libraries/Required`) + - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) + - React (from `../node_modules/react-native/`) + - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - React-Core (from `../node_modules/react-native/`) + - React-Core-prebuilt (from `../node_modules/react-native/React-Core-prebuilt.podspec`) + - React-Core/RCTWebSocket (from `../node_modules/react-native/`) + - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) + - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) + - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`) + - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`) + - React-Fabric (from `../node_modules/react-native/ReactCommon`) + - React-FabricComponents (from `../node_modules/react-native/ReactCommon`) + - React-FabricImage (from `../node_modules/react-native/ReactCommon`) + - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`) + - React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`) + - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) + - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) + - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`) + - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) + - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) + - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) + - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) + - React-jsinspectorcdp (from `../node_modules/react-native/ReactCommon/jsinspector-modern/cdp`) + - React-jsinspectornetwork (from `../node_modules/react-native/ReactCommon/jsinspector-modern/network`) + - React-jsinspectortracing (from `../node_modules/react-native/ReactCommon/jsinspector-modern/tracing`) + - React-jsitooling (from `../node_modules/react-native/ReactCommon/jsitooling`) + - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) + - React-logger (from `../node_modules/react-native/ReactCommon/logger`) + - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) + - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`) + - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) + - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) + - React-oscompat (from `../node_modules/react-native/ReactCommon/oscompat`) + - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`) + - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) + - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) + - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) + - React-RCTFabric (from `../node_modules/react-native/React`) + - React-RCTFBReactNativeSpec (from `../node_modules/react-native/React`) + - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) + - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) + - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) + - React-RCTRuntime (from `../node_modules/react-native/React/Runtime`) + - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) + - React-RCTText (from `../node_modules/react-native/Libraries/Text`) + - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`) + - React-renderercss (from `../node_modules/react-native/ReactCommon/react/renderer/css`) + - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) + - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) + - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`) + - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) + - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`) + - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) + - React-timing (from `../node_modules/react-native/ReactCommon/react/timing`) + - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) - ReactAppDependencyProvider (from `build/generated/ios`) - ReactCodegen (from `build/generated/ios`) - - "ReactCommon/turbomodule/core (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon`)" - - "ReactNativeDependencies (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec`)" - - "RNCAsyncStorage (from `../node_modules/.pnpm/@react-native-async-storage+async-storage@2.2.0_react-native@0.81.5_@babel+core@7.28.6_@types_fp4qq3a7mejmut52v6jrlvxlzi/node_modules/@react-native-async-storage/async-storage`)" - - "RNGestureHandler (from `../node_modules/.pnpm/react-native-gesture-handler@2.30.0_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1._tylda4qoo2jtxaj3472gn4luma/node_modules/react-native-gesture-handler`)" - - "RNReanimated (from `../node_modules/.pnpm/react-native-reanimated@4.1.6_@babel+core@7.28.6_react-native-worklets@0.5.1_@babel+core@7.28_ky3sbxf6i7nkyacc2hzg3xcz4q/node_modules/react-native-reanimated`)" - - "RNScreens (from `../node_modules/.pnpm/react-native-screens@4.16.0_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0__react@19.1.0/node_modules/react-native-screens`)" - - "RNSVG (from `../node_modules/.pnpm/react-native-svg@15.12.1_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0__react@19.1.0/node_modules/react-native-svg`)" - - "RNWorklets (from `../node_modules/.pnpm/react-native-worklets@0.5.1_@babel+core@7.28.6_react-native@0.81.5_@babel+core@7.28.6_@types+_5atwepuw3zy3crkgvetf35tkve/node_modules/react-native-worklets`)" - - "Yoga (from `../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/yoga`)" + - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - ReactNativeDependencies (from `../node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec`) + - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)" + - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) + - RNReanimated (from `../node_modules/react-native-reanimated`) + - RNScreens (from `../node_modules/react-native-screens`) + - RNSVG (from `../node_modules/react-native-svg`) + - RNWorklets (from `../node_modules/react-native-worklets`) + - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) EXTERNAL SOURCES: EXApplication: - :path: "../node_modules/.pnpm/expo-application@7.0.8_expo@54.0.32/node_modules/expo-application/ios" + :path: "../node_modules/expo-application/ios" EXConstants: - :path: "../node_modules/.pnpm/expo-constants@18.0.13_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0_/node_modules/expo-constants/ios" + :path: "../node_modules/expo-constants/ios" EXJSONUtils: - :path: "../node_modules/.pnpm/expo-json-utils@0.15.0/node_modules/expo-json-utils/ios" + :path: "../node_modules/expo-json-utils/ios" EXManifests: - :path: "../node_modules/.pnpm/expo-manifests@1.0.10_expo@54.0.32/node_modules/expo-manifests/ios" + :path: "../node_modules/expo-manifests/ios" EXNotifications: - :path: "../node_modules/.pnpm/expo-notifications@0.32.16_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@1_nvlvke5tn7wk5pigfsu7j4ieeq/node_modules/expo-notifications/ios" + :path: "../node_modules/expo-notifications/ios" Expo: - :path: "../node_modules/.pnpm/expo@54.0.32_@babel+core@7.28.6_@expo+metro-runtime@6.1.2_expo-router@6.0.22_react-native@0.8_7rhpxisdkrzvrgzbu7ct455kta/node_modules/expo" + :path: "../node_modules/expo" expo-dev-client: - :path: "../node_modules/.pnpm/expo-dev-client@6.0.20_expo@54.0.32/node_modules/expo-dev-client/ios" + :path: "../node_modules/expo-dev-client/ios" expo-dev-launcher: - :path: "../node_modules/.pnpm/expo-dev-launcher@6.0.20_expo@54.0.32/node_modules/expo-dev-launcher" + :path: "../node_modules/expo-dev-launcher" expo-dev-menu: - :path: "../node_modules/.pnpm/expo-dev-menu@7.0.18_expo@54.0.32/node_modules/expo-dev-menu" + :path: "../node_modules/expo-dev-menu" expo-dev-menu-interface: - :path: "../node_modules/.pnpm/expo-dev-menu-interface@2.0.0_expo@54.0.32/node_modules/expo-dev-menu-interface/ios" + :path: "../node_modules/expo-dev-menu-interface/ios" ExpoAsset: - :path: "../node_modules/.pnpm/expo-asset@12.0.12_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0__react@19.1.0/node_modules/expo-asset/ios" + :path: "../node_modules/expo-asset/ios" ExpoCrypto: - :path: "../node_modules/.pnpm/expo-crypto@15.0.8_expo@54.0.32/node_modules/expo-crypto/ios" + :path: "../node_modules/expo-crypto/ios" ExpoDevice: - :path: "../node_modules/.pnpm/expo-device@8.0.10_expo@54.0.32/node_modules/expo-device/ios" + :path: "../node_modules/expo-device/ios" ExpoFileSystem: - :path: "../node_modules/.pnpm/expo-file-system@19.0.21_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0_/node_modules/expo-file-system/ios" + :path: "../node_modules/expo-file-system/ios" ExpoFont: - :path: "../node_modules/.pnpm/expo-font@14.0.11_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0__react@19.1.0/node_modules/expo-font/ios" + :path: "../node_modules/expo-font/ios" ExpoHead: - :path: "../node_modules/.pnpm/expo-router@6.0.22_@expo+metro-runtime@6.1.2_@types+react@19.1.17_expo-constants@18.0.13_expo_mxedi6ntnfsoyp6zijog4pvdsy/node_modules/expo-router/ios" + :path: "../node_modules/expo-router/ios" ExpoKeepAwake: - :path: "../node_modules/.pnpm/expo-keep-awake@15.0.8_expo@54.0.32_react@19.1.0/node_modules/expo-keep-awake/ios" + :path: "../node_modules/expo-keep-awake/ios" ExpoLinearGradient: - :path: "../node_modules/.pnpm/expo-linear-gradient@15.0.8_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@_e6k2hjkd5k4lph2ersbp3gfshy/node_modules/expo-linear-gradient/ios" + :path: "../node_modules/expo-linear-gradient/ios" ExpoLinking: - :path: "../node_modules/.pnpm/expo-linking@8.0.11_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0__react@19.1.0/node_modules/expo-linking/ios" + :path: "../node_modules/expo-linking/ios" ExpoLocalization: - :path: "../node_modules/.pnpm/expo-localization@17.0.8_expo@54.0.32_react@19.1.0/node_modules/expo-localization/ios" + :path: "../node_modules/expo-localization/ios" ExpoModulesCore: - :path: "../node_modules/.pnpm/expo-modules-core@3.0.29_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0__react@19.1.0/node_modules/expo-modules-core" + :path: "../node_modules/expo-modules-core" ExpoSplashScreen: - :path: "../node_modules/.pnpm/expo-splash-screen@31.0.13_expo@54.0.32/node_modules/expo-splash-screen/ios" + :path: "../node_modules/expo-splash-screen/ios" ExpoWebBrowser: - :path: "../node_modules/.pnpm/expo-web-browser@15.0.10_expo@54.0.32_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0_/node_modules/expo-web-browser/ios" + :path: "../node_modules/expo-web-browser/ios" EXUpdatesInterface: - :path: "../node_modules/.pnpm/expo-updates-interface@2.0.0_expo@54.0.32/node_modules/expo-updates-interface/ios" + :path: "../node_modules/expo-updates-interface/ios" FBLazyVector: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/FBLazyVector" + :path: "../node_modules/react-native/Libraries/FBLazyVector" hermes-engine: - :podspec: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" + :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" :tag: hermes-2025-07-07-RNv0.81.0-e0fc67142ec0763c6b6153ca2bf96df815539782 RCTDeprecation: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" + :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" RCTRequired: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Required" + :path: "../node_modules/react-native/Libraries/Required" RCTTypeSafety: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/TypeSafety" + :path: "../node_modules/react-native/Libraries/TypeSafety" React: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/" + :path: "../node_modules/react-native/" React-callinvoker: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/callinvoker" + :path: "../node_modules/react-native/ReactCommon/callinvoker" React-Core: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/" + :path: "../node_modules/react-native/" React-Core-prebuilt: - :podspec: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/React-Core-prebuilt.podspec" + :podspec: "../node_modules/react-native/React-Core-prebuilt.podspec" React-CoreModules: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/React/CoreModules" + :path: "../node_modules/react-native/React/CoreModules" React-cxxreact: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/cxxreact" + :path: "../node_modules/react-native/ReactCommon/cxxreact" React-debug: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/debug" + :path: "../node_modules/react-native/ReactCommon/react/debug" React-defaultsnativemodule: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/nativemodule/defaults" + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/defaults" React-domnativemodule: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/nativemodule/dom" + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/dom" React-Fabric: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon" + :path: "../node_modules/react-native/ReactCommon" React-FabricComponents: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon" + :path: "../node_modules/react-native/ReactCommon" React-FabricImage: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon" + :path: "../node_modules/react-native/ReactCommon" React-featureflags: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/featureflags" + :path: "../node_modules/react-native/ReactCommon/react/featureflags" React-featureflagsnativemodule: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/nativemodule/featureflags" + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/featureflags" React-graphics: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/renderer/graphics" + :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" React-hermes: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/hermes" + :path: "../node_modules/react-native/ReactCommon/hermes" React-idlecallbacksnativemodule: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks" + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks" React-ImageManager: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" + :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" React-jserrorhandler: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jserrorhandler" + :path: "../node_modules/react-native/ReactCommon/jserrorhandler" React-jsi: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsi" + :path: "../node_modules/react-native/ReactCommon/jsi" React-jsiexecutor: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsiexecutor" + :path: "../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsinspector-modern" + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" React-jsinspectorcdp: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsinspector-modern/cdp" + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern/cdp" React-jsinspectornetwork: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsinspector-modern/network" + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern/network" React-jsinspectortracing: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsinspector-modern/tracing" + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern/tracing" React-jsitooling: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/jsitooling" + :path: "../node_modules/react-native/ReactCommon/jsitooling" React-jsitracing: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/hermes/executor/" + :path: "../node_modules/react-native/ReactCommon/hermes/executor/" React-logger: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/logger" + :path: "../node_modules/react-native/ReactCommon/logger" React-Mapbuffer: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon" + :path: "../node_modules/react-native/ReactCommon" React-microtasksnativemodule: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/nativemodule/microtasks" + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks" react-native-safe-area-context: - :path: "../node_modules/.pnpm/react-native-safe-area-context@5.6.2_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1_azuxgonsvxb2yngtegtuvyxcpi/node_modules/react-native-safe-area-context" + :path: "../node_modules/react-native-safe-area-context" React-NativeModulesApple: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" React-oscompat: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/oscompat" + :path: "../node_modules/react-native/ReactCommon/oscompat" React-perflogger: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/reactperflogger" + :path: "../node_modules/react-native/ReactCommon/reactperflogger" React-performancetimeline: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/performance/timeline" + :path: "../node_modules/react-native/ReactCommon/react/performance/timeline" React-RCTActionSheet: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/ActionSheetIOS" + :path: "../node_modules/react-native/Libraries/ActionSheetIOS" React-RCTAnimation: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/NativeAnimation" + :path: "../node_modules/react-native/Libraries/NativeAnimation" React-RCTAppDelegate: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/AppDelegate" + :path: "../node_modules/react-native/Libraries/AppDelegate" React-RCTBlob: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Blob" + :path: "../node_modules/react-native/Libraries/Blob" React-RCTFabric: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/React" + :path: "../node_modules/react-native/React" React-RCTFBReactNativeSpec: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/React" + :path: "../node_modules/react-native/React" React-RCTImage: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Image" + :path: "../node_modules/react-native/Libraries/Image" React-RCTLinking: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/LinkingIOS" + :path: "../node_modules/react-native/Libraries/LinkingIOS" React-RCTNetwork: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Network" + :path: "../node_modules/react-native/Libraries/Network" React-RCTRuntime: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/React/Runtime" + :path: "../node_modules/react-native/React/Runtime" React-RCTSettings: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Settings" + :path: "../node_modules/react-native/Libraries/Settings" React-RCTText: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Text" + :path: "../node_modules/react-native/Libraries/Text" React-RCTVibration: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/Libraries/Vibration" + :path: "../node_modules/react-native/Libraries/Vibration" React-rendererconsistency: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/renderer/consistency" + :path: "../node_modules/react-native/ReactCommon/react/renderer/consistency" React-renderercss: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/renderer/css" + :path: "../node_modules/react-native/ReactCommon/react/renderer/css" React-rendererdebug: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/renderer/debug" + :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" React-RuntimeApple: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/runtime/platform/ios" + :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios" React-RuntimeCore: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/runtime" + :path: "../node_modules/react-native/ReactCommon/react/runtime" React-runtimeexecutor: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/runtimeexecutor" + :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" React-RuntimeHermes: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/runtime" + :path: "../node_modules/react-native/ReactCommon/react/runtime" React-runtimescheduler: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" + :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" React-timing: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/timing" + :path: "../node_modules/react-native/ReactCommon/react/timing" React-utils: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/react/utils" + :path: "../node_modules/react-native/ReactCommon/react/utils" ReactAppDependencyProvider: :path: build/generated/ios ReactCodegen: :path: build/generated/ios ReactCommon: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon" + :path: "../node_modules/react-native/ReactCommon" ReactNativeDependencies: - :podspec: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec" + :podspec: "../node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec" RNCAsyncStorage: - :path: "../node_modules/.pnpm/@react-native-async-storage+async-storage@2.2.0_react-native@0.81.5_@babel+core@7.28.6_@types_fp4qq3a7mejmut52v6jrlvxlzi/node_modules/@react-native-async-storage/async-storage" + :path: "../node_modules/@react-native-async-storage/async-storage" RNGestureHandler: - :path: "../node_modules/.pnpm/react-native-gesture-handler@2.30.0_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1._tylda4qoo2jtxaj3472gn4luma/node_modules/react-native-gesture-handler" + :path: "../node_modules/react-native-gesture-handler" RNReanimated: - :path: "../node_modules/.pnpm/react-native-reanimated@4.1.6_@babel+core@7.28.6_react-native-worklets@0.5.1_@babel+core@7.28_ky3sbxf6i7nkyacc2hzg3xcz4q/node_modules/react-native-reanimated" + :path: "../node_modules/react-native-reanimated" RNScreens: - :path: "../node_modules/.pnpm/react-native-screens@4.16.0_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0__react@19.1.0/node_modules/react-native-screens" + :path: "../node_modules/react-native-screens" RNSVG: - :path: "../node_modules/.pnpm/react-native-svg@15.12.1_react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0__react@19.1.0/node_modules/react-native-svg" + :path: "../node_modules/react-native-svg" RNWorklets: - :path: "../node_modules/.pnpm/react-native-worklets@0.5.1_@babel+core@7.28.6_react-native@0.81.5_@babel+core@7.28.6_@types+_5atwepuw3zy3crkgvetf35tkve/node_modules/react-native-worklets" + :path: "../node_modules/react-native-worklets" Yoga: - :path: "../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native/ReactCommon/yoga" + :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - EXApplication: 13420f8139864183f8a04fd6099077bdf8cfb186 - EXConstants: 3feb66fd1d94202fc1f0946d74e029d8b224b60e + EXApplication: 1e98d4b1dccdf30627f92917f4b2c5a53c330e5f + EXConstants: fce59a631a06c4151602843667f7cfe35f81e271 EXJSONUtils: 1d3e4590438c3ee593684186007028a14b3686cd - EXManifests: 83ef0844fcf06d6099b12a7bdbd7d36fc0e1dd16 - EXNotifications: 2a3feb7af6194828d9aafda72f63a9a03866230a - Expo: b8d64eb9a496ebe8c71e3dae7eeb7f394b146b80 - expo-dev-client: 12ef7d5b14d93e309922acea78dcd851db583a87 - expo-dev-launcher: 47994056008ffdc30a6a5e328a375b3e30a8db05 - expo-dev-menu: ea4fb803ace52e60d7cd8060c7cd379612a140b2 + EXManifests: a8d97683e5c7a3b026ffbd58559c64dc655b747b + EXNotifications: 9eec98712cc814ceff916d876cb53859003b0597 + Expo: 4e503a041c59c4e34c8be262a135848ad5cd3710 + expo-dev-client: 425ee077d6754a98cfe3a2e2410d29b440b24c9d + expo-dev-launcher: a4f4cdef064ab1fb8621e5b8c7c457cd6e9568c3 + expo-dev-menu: 05b18812110c175814c6af0d09dd658abcc5e00d expo-dev-menu-interface: 600df12ea01efecdd822daaf13cc0ac091775533 - ExpoAsset: d999f3bbd998a750f3b74cb913229848901b926b - ExpoCrypto: 4d23a9ff67c25e2ed23ca792d81e58817a7ea1b9 - ExpoDevice: 0773c782b055558ca9b40b74aa4a8133a66cd0d2 - ExpoFileSystem: aefcd337b94b874f88752ebefc52813b84992fad - ExpoFont: c625dbd97ed57e9089b172b2a7bb99003d074664 - ExpoHead: b691a2ed7ab02ed820b6c6468941832d34969c29 - ExpoKeepAwake: 44bf6715bc1d2ddb17afe19d927cd039cda123f0 - ExpoLinearGradient: 814a21fc4056c3cf606e4f19e31e47074c5b5a86 - ExpoLinking: ebf543fd411d56375cb4eee07f6ab4e31c7ad959 - ExpoLocalization: 6ac6f326210f0a3141ef6f58ab8f8f4ed003b485 - ExpoModulesCore: 77496909fd3c800f97f7f2007dd26aeac4bb3798 - ExpoSplashScreen: 72fbc6dd9d6404dd9d0725a56c9ac1383bc0b14f - ExpoWebBrowser: 88b116cd378d9609c776c0903fe4070fca461588 - EXUpdatesInterface: 1436757deb0d574b84bba063bd024c315e0ec08b + ExpoAsset: f867e55ceb428aab99e1e8c082b5aee7c159ea18 + ExpoCrypto: b6105ebaa15d6b38a811e71e43b52cd934945322 + ExpoDevice: 6327c3c200816795708885adf540d26ecab83d1a + ExpoFileSystem: 858a44267a3e6e9057e0888ad7c7cfbf55d52063 + ExpoFont: f543ce20a228dd702813668b1a07b46f51878d47 + ExpoHead: 4425246bc93411f0fe7f6945f95f698e91db8780 + ExpoKeepAwake: 55f75eca6499bb9e4231ebad6f3e9cb8f99c0296 + ExpoLinearGradient: 809102bdb979f590083af49f7fa4805cd931bd58 + ExpoLinking: 8f0aaf69aa56f832913030503b6263dc6f647f37 + ExpoLocalization: d9168d5300a5b03e5e78b986124d11fb6ec3ebbd + ExpoModulesCore: f3da4f1ab5a8375d0beafab763739dbee8446583 + ExpoSplashScreen: bc3cffefca2716e5f22350ca109badd7e50ec14d + ExpoWebBrowser: 17b064c621789e41d4816c95c93f429b84971f52 + EXUpdatesInterface: 5adf50cb41e079c861da6d9b4b954c3db9a50734 FBLazyVector: e95a291ad2dadb88e42b06e0c5fb8262de53ec12 hermes-engine: 9f4dfe93326146a1c99eb535b1cb0b857a3cd172 RCTDeprecation: 943572d4be82d480a48f4884f670135ae30bf990 @@ -2571,72 +2571,72 @@ SPEC CHECKSUMS: RCTTypeSafety: 16a4144ca3f959583ab019b57d5633df10b5e97c React: 914f8695f9bf38e6418228c2ffb70021e559f92f React-callinvoker: 1c0808402aee0c6d4a0d8e7220ce6547af9fba71 - React-Core: 4ae98f9e8135b8ddbd7c98730afb6fdae883db90 - React-Core-prebuilt: 8f4cca589c14e8cf8fc6db4587ef1c2056b5c151 - React-CoreModules: e878a90bb19b8f3851818af997dbae3b3b0a27ac - React-cxxreact: 28af9844f6dc87be1385ab521fbfb3746f19563c + React-Core: c61410ef0ca6055e204a963992e363227e0fd1c5 + React-Core-prebuilt: 02f0ad625ddd47463c009c2d0c5dd35c0d982599 + React-CoreModules: 1f6d1744b5f9f2ec684a4bb5ced25370f87e5382 + React-cxxreact: 3af79478e8187b63ffc22b794cd42d3fc1f1f2da React-debug: 6328c2228e268846161f10082e80dc69eac2e90a - React-defaultsnativemodule: afc9d809ec75780f39464a6949c07987fbea488c - React-domnativemodule: 91a233260411d41f27f67aa1358b7f9f0bfd101d - React-Fabric: 21f349b5e93f305a3c38c885902683a9c79cf983 - React-FabricComponents: 47ac634cc9ecc64b30a9997192f510eebe4177e4 - React-FabricImage: 21873acd6d4a51a0b97c133141051c7acb11cc86 - React-featureflags: 653f469f0c3c9dc271d610373e3b6e66a9fd847d - React-featureflagsnativemodule: c91a8a3880e0f4838286402241ead47db43aed28 - React-graphics: b4bdb0f635b8048c652a5d2b73eb8b1ddd950f24 - React-hermes: fcfad3b917400f49026f3232561e039c9d1c34bf - React-idlecallbacksnativemodule: 8cb83207e39f8179ac1d344b6177c6ab3ccebcdc - React-ImageManager: 396128004783fc510e629124dce682d38d1088e7 - React-jserrorhandler: b58b788d788cdbf8bda7db74a88ebfcffc8a0795 - React-jsi: d2c3f8555175371c02da6dfe7ed1b64b55a9d6c0 - React-jsiexecutor: ba537434eb45ee018b590ed7d29ee233fddb8669 - React-jsinspector: f21b6654baf96cb9f71748844a32468a5f73ad51 - React-jsinspectorcdp: 3f8be4830694c3c1c39442e50f8db877966d43f0 - React-jsinspectornetwork: 70e41469565712ad60e11d9c8b8f999b9f7f61eb - React-jsinspectortracing: eccf9bfa4ec7f130d514f215cfb2222dc3c0e270 - React-jsitooling: b376a695f5a507627f7934748533b24eed1751ca - React-jsitracing: 5c8c3273dda2d95191cc0612fb5e71c4d9018d2a - React-logger: c3e2f8a2e284341205f61eef3d4677ab5a309dfd - React-Mapbuffer: 603c18db65844bb81dbe62fee8fcc976eaeb7108 - React-microtasksnativemodule: d77e0c426fce34c23227394c96ca1033b30c813c - react-native-safe-area-context: 53f796cb6c814661bbe99fbdfd0585d07b996cdd - React-NativeModulesApple: 1664340b8750d64e0ef3907c5e53d9481f74bcbd + React-defaultsnativemodule: d635ef36d755321e5d6fc065bd166b2c5a0e9833 + React-domnativemodule: dd28f6d96cd21236e020be2eff6fe0b7d4ec3b66 + React-Fabric: 2e32c3fdbb1fbcf5fde54607e3abe453c6652ce2 + React-FabricComponents: 5ed0cdb81f6b91656cb4d3be432feaa28a58071a + React-FabricImage: 2bc714f818cb24e454f5d3961864373271b2faf8 + React-featureflags: 847642f41fa71ad4eec5e0351badebcad4fe6171 + React-featureflagsnativemodule: c868a544b2c626fa337bcbd364b1befe749f0d3f + React-graphics: 192ec701def5b3f2a07db2814dfba5a44986cff6 + React-hermes: e875778b496c86d07ab2ccaa36a9505d248a254b + React-idlecallbacksnativemodule: 4d57965cdf82c14ee3b337189836cd8491632b76 + React-ImageManager: bd0b99e370b13de82c9cd15f0f08144ff3de079e + React-jserrorhandler: a2fdef4cbcfdcdf3fa9f5d1f7190f7fd4535248d + React-jsi: 89d43d1e7d4d0663f8ba67e0b39eb4e4672c27de + React-jsiexecutor: abe4874aaab90dfee5dec480680220b2f8af07e3 + React-jsinspector: a0b3e051aef842b0b2be2353790ae2b2a5a65a8f + React-jsinspectorcdp: 6346013b2247c6263fbf5199adf4a8751e53bd89 + React-jsinspectornetwork: 26281aa50d49fc1ec93abf981d934698fa95714f + React-jsinspectortracing: 55eedf6d57540507570259a778663b90060bbd6e + React-jsitooling: 0e001113fa56d8498aa8ac28437ac0d36348e51a + React-jsitracing: b713793eb8a5bbc4d86a84e9d9e5023c0f58cbaf + React-logger: 50fdb9a8236da90c0b1072da5c32ee03aeb5bf28 + React-Mapbuffer: 9050ee10c19f4f7fca8963d0211b2854d624973e + React-microtasksnativemodule: f775db9e991c6f3b8ccbc02bfcde22770f96e23b + react-native-safe-area-context: 37e680fc4cace3c0030ee46e8987d24f5d3bdab2 + React-NativeModulesApple: 8969913947d5b576de4ed371a939455a8daf28aa React-oscompat: ce47230ed20185e91de62d8c6d139ae61763d09c - React-perflogger: b1af3cfb3f095f819b2814910000392a8e17ba9f - React-performancetimeline: f9ec65b77bcadbc7bd8b47a6f4b4b697da7b1490 + React-perflogger: 02b010e665772c7dcb859d85d44c1bfc5ac7c0e4 + React-performancetimeline: 130db956b5a83aa4fb41ddf5ae68da89f3fb1526 React-RCTActionSheet: 0b14875b3963e9124a5a29a45bd1b22df8803916 - React-RCTAnimation: 60f6eca214a62b9673f64db6df3830cee902b5af - React-RCTAppDelegate: 37734b39bac108af30a0fd9d3e1149ec68b82c28 - React-RCTBlob: 83fbcbd57755caf021787324aac2fe9b028cc264 - React-RCTFabric: a05cb1df484008db3753c8b4a71e4c6d9f1e43a6 - React-RCTFBReactNativeSpec: d58d7ae9447020bbbac651e3b0674422aba18266 - React-RCTImage: 47aba3be7c6c64f956b7918ab933769602406aac - React-RCTLinking: 2dbaa4df2e4523f68baa07936bd8efdfa34d5f31 - React-RCTNetwork: 1fca7455f9dedf7de2b95bec438da06680f3b000 - React-RCTRuntime: 17819dd1dfc8613efaf4cbb9d8686baae4a83e5b - React-RCTSettings: 01bf91c856862354d3d2f642ccb82f3697a4284a - React-RCTText: cb576a3797dcb64933613c522296a07eaafc0461 - React-RCTVibration: 560af8c086741f3525b8456a482cdbe27f9d098e + React-RCTAnimation: a7b90fd2af7bb9c084428867445a1481a8cb112e + React-RCTAppDelegate: 3262bedd01263f140ec62b7989f4355f57cec016 + React-RCTBlob: c17531368702f1ebed5d0ada75a7cf5915072a53 + React-RCTFabric: 6409edd8cfdc3133b6cc75636d3b858fdb1d11ea + React-RCTFBReactNativeSpec: c004b27b4fa3bd85878ad2cf53de3bbec85da797 + React-RCTImage: c68078a120d0123f4f07a5ac77bea3bb10242f32 + React-RCTLinking: cf8f9391fe7fe471f96da3a5f0435235eca18c5b + React-RCTNetwork: ca31f7c879355760c2d9832a06ee35f517938a20 + React-RCTRuntime: a6cf4a1e42754fc87f493e538f2ac6b820e45418 + React-RCTSettings: e0e140b2ff4bf86d34e9637f6316848fc00be035 + React-RCTText: 75915bace6f7877c03a840cc7b6c622fb62bfa6b + React-RCTVibration: 25f26b85e5e432bb3c256f8b384f9269e9529f25 React-rendererconsistency: 2dac03f448ff337235fd5820b10f81633328870d - React-renderercss: c5c6b7a15948dd28facca39a18ac269073718490 - React-rendererdebug: 3c9d5e1634273f5a24d84cc5669f290ce0bdc812 - React-RuntimeApple: 887637d1e12ea8262df7d32bc100467df2302613 - React-RuntimeCore: 91f779835dc4f8f84777fe5dd24f1a22f96454e4 - React-runtimeexecutor: 8bb6b738f37b0ada4a6269e6f8ab1133dea0285c - React-RuntimeHermes: 4cb93de9fa8b1cc753d200dbe61a01b9ec5f5562 - React-runtimescheduler: 83dc28f530bfbd2fce84ed13aa7feebdc24e5af7 - React-timing: 03c7217455d2bff459b27a3811be25796b600f47 - React-utils: 6d46795ae0444ec8a5d9a5f201157b286bf5250a - ReactAppDependencyProvider: c277c5b231881ad4f00cd59e3aa0671b99d7ebee - ReactCodegen: 88a1f4643f15841573f833b895bfa2a0c6cb4e7f - ReactCommon: e6e232202a447d353e5531f2be82f50f47cbaa9a + React-renderercss: 477da167bb96b5ac86d30c5d295412fb853f5453 + React-rendererdebug: 2a1798c6f3ef5f22d466df24c33653edbabb5b89 + React-RuntimeApple: 28cf4d8eb18432f6a21abbed7d801ab7f6b6f0b4 + React-RuntimeCore: 41bf0fd56a00de5660f222415af49879fa49c4f0 + React-runtimeexecutor: 1afb774dde3011348e8334be69d2f57a359ea43e + React-RuntimeHermes: f3b158ea40e8212b1a723a68b4315e7a495c5fc6 + React-runtimescheduler: 3e1e2bec7300bae512533107d8e54c6e5c63fe0f + React-timing: 6fa9883de2e41791e5dc4ec404e5e37f3f50e801 + React-utils: 6e2035b53d087927768649a11a26c4e092448e34 + ReactAppDependencyProvider: 1bcd3527ac0390a1c898c114f81ff954be35ed79 + ReactCodegen: 7d4593f7591f002d137fe40cef3f6c11f13c88cc + ReactCommon: 08810150b1206cc44aecf5f6ae19af32f29151a8 ReactNativeDependencies: 71ce9c28beb282aa720ea7b46980fff9669f428a - RNCAsyncStorage: e85a99325df9eb0191a6ee2b2a842644c7eb29f4 - RNGestureHandler: 40c2d1c168e54715fe52e0fb16cb38c54611e4f3 - RNReanimated: 10415bc8396eaeac0d7b2c9a1538eae7e607ec9c - RNScreens: dd61bc3a3e6f6901ad833efa411917d44827cf51 - RNSVG: 2825ee146e0f6a16221e852299943e4cceef4528 - RNWorklets: 9ccdc8112b17af6eee2c85a233891cb80db150ad + RNCAsyncStorage: 3a4f5e2777dae1688b781a487923a08569e27fe4 + RNGestureHandler: e0d0bce5599f6120b7adf90c38d2805e2935795f + RNReanimated: e5c702a3e24cc1c68b2de67671713f35461678f4 + RNScreens: d8d6f1792f6e7ac12b0190d33d8d390efc0c1845 + RNSVG: 31d6639663c249b7d5abc9728dde2041eb2a3c34 + RNWorklets: 76fce72926e28e304afb44f0da23b2d24f2c1fa0 Yoga: 5934998fbeaef7845dbf698f698518695ab4cd1a PODFILE CHECKSUM: c2c3838f0b2a579fef2350bff2ecaa005e27145d diff --git a/client/ios/client.xcodeproj/project.pbxproj b/client/ios/client.xcodeproj/project.pbxproj index e0139a9..7ef5408 100644 --- a/client/ios/client.xcodeproj/project.pbxproj +++ b/client/ios/client.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 70; + objectVersion = 56; objects = { /* Begin PBXBuildFile section */ @@ -11,7 +11,7 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 1A1DE01D4133812B2E2BA692 /* libPods-client.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E3328F0E595C1F4A244DF238 /* libPods-client.a */; }; 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; - A1B2C3D4E5F60718293A4B5C /* 情绪小组件/EmotionWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D4E5F60718293A4B5B /* 情绪小组件/EmotionWidget.swift */; }; + A1B2C3D4E5F60718293A4B5C /* EmotionWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D4E5F60718293A4B5B /* EmotionWidget.swift */; }; A8C1D2E3F4A5B6C7D8E9F0A2 /* AppGroupStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8C1D2E3F4A5B6C7D8E9F0A1 /* AppGroupStorage.swift */; }; A8C1D2E3F4A5B6C7D8E9F0A3 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB3DAF802F2A4B8D00450593 /* WidgetKit.framework */; }; A8C1D2E3F4A5B6C7D8E9F0B2 /* AppGroupStorageBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C1D2E3F4A5B6C7D8E9F0B1 /* AppGroupStorageBridge.m */; }; @@ -53,7 +53,7 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = client/Info.plist; sourceTree = ""; }; 3C76CA16D0801CBF0D731C7C /* Pods-client.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-client.release.xcconfig"; path = "Target Support Files/Pods-client/Pods-client.release.xcconfig"; sourceTree = ""; }; 75F52ADE07CAE9D9736D7671 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = client/PrivacyInfo.xcprivacy; sourceTree = ""; }; - A1B2C3D4E5F60718293A4B5B /* 情绪小组件/EmotionWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "情绪小组件/EmotionWidget.swift"; sourceTree = ""; }; + A1B2C3D4E5F60718293A4B5B /* EmotionWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "情绪小组件/EmotionWidget.swift"; sourceTree = ""; }; A8C1D2E3F4A5B6C7D8E9F0A1 /* AppGroupStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppGroupStorage.swift; path = client/AppGroupStorage.swift; sourceTree = ""; }; A8C1D2E3F4A5B6C7D8E9F0B1 /* AppGroupStorageBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AppGroupStorageBridge.m; path = client/AppGroupStorageBridge.m; sourceTree = ""; }; AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = client/SplashScreen.storyboard; sourceTree = ""; }; @@ -72,7 +72,7 @@ /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ - EB3DAF952F2A4B8F00450593 /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { + EB3DAF952F2A4B8F00450593 /* Exceptions for "情绪小组件" folder in "情绪小组件Extension" target */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( EmotionWidget.swift, @@ -83,7 +83,18 @@ /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ - EB3DAF842F2A4B8E00450593 /* 情绪小组件 */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (EB3DAF952F2A4B8F00450593 /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = "情绪小组件"; sourceTree = ""; }; + EB3DAF842F2A4B8E00450593 /* 情绪小组件 */ = { + isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + EB3DAF952F2A4B8F00450593 /* Exceptions for "情绪小组件" folder in "情绪小组件Extension" target */, + ); + explicitFileTypes = { + }; + explicitFolders = ( + ); + path = "情绪小组件"; + sourceTree = ""; + }; /* End PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFrameworksBuildPhase section */ @@ -199,7 +210,7 @@ EB3DAFD42F2A5FC100450593 /* Recovered References */ = { isa = PBXGroup; children = ( - A1B2C3D4E5F60718293A4B5B /* 情绪小组件/EmotionWidget.swift */, + A1B2C3D4E5F60718293A4B5B /* EmotionWidget.swift */, ); name = "Recovered References"; sourceTree = ""; @@ -466,7 +477,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A1B2C3D4E5F60718293A4B5C /* 情绪小组件/EmotionWidget.swift in Sources */, + A1B2C3D4E5F60718293A4B5C /* EmotionWidget.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -621,7 +632,7 @@ LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = NO; - REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native"; + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; SKIP_INSTALL = NO; STRING_CATALOG_GENERATE_SYMBOLS = YES; @@ -680,7 +691,7 @@ LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/.pnpm/react-native@0.81.5_@babel+core@7.28.6_@types+react@19.1.17_react@19.1.0/node_modules/react-native"; + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; SKIP_INSTALL = NO; STRING_CATALOG_GENERATE_SYMBOLS = YES; diff --git a/client/package-lock.json b/client/package-lock.json index c857d57..578574d 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -7,13 +7,15 @@ "": { "name": "client", "version": "1.0.0", - "hasInstallScript": true, "dependencies": { "@expo/vector-icons": "^15.0.3", "@react-native-async-storage/async-storage": "^2.2.0", "@react-navigation/native": "^7.1.8", "expo": "~54.0.32", "expo-constants": "~18.0.13", + "expo-crypto": "^15.0.8", + "expo-dev-client": "^6.0.20", + "expo-device": "^8.0.10", "expo-font": "~14.0.11", "expo-linear-gradient": "^15.0.8", "expo-linking": "~8.0.11", @@ -24,11 +26,11 @@ "expo-status-bar": "~3.0.9", "expo-web-browser": "~15.0.10", "i18next": "^25.8.0", - "pnpm": "^10.28.2", "react": "19.1.0", "react-dom": "19.1.0", "react-i18next": "^16.5.4", "react-native": "0.81.5", + "react-native-gesture-handler": "^2.30.0", "react-native-reanimated": "~4.1.1", "react-native-safe-area-context": "~5.6.0", "react-native-screens": "~4.16.0", @@ -40,7 +42,8 @@ "devDependencies": { "@types/react": "~19.1.0", "react-test-renderer": "19.1.0", - "typescript": "~5.9.2" + "typescript": "~5.9.2", + "vitest": "^4.0.18" } }, "node_modules/@0no-co/graphql.web": { @@ -1534,6 +1537,460 @@ "node": ">=6.9.0" } }, + "node_modules/@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmmirror.com/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "license": "MIT", + "dependencies": { + "@types/hammerjs": "^2.0.36" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@expo/code-signing-certificates": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.6.tgz", @@ -2784,6 +3241,356 @@ "nanoid": "^3.3.11" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -2808,6 +3615,13 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", @@ -3092,6 +3906,31 @@ "@babel/types": "^7.28.2" } }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmmirror.com/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", @@ -3101,6 +3940,12 @@ "@types/node": "*" } }, + "node_modules/@types/hammerjs": { + "version": "2.0.46", + "resolved": "https://registry.npmmirror.com/@types/hammerjs/-/hammerjs-2.0.46.tgz", + "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", + "license": "MIT" + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -3194,6 +4039,117 @@ "@urql/core": "^5.0.0" } }, + "node_modules/@vitest/expect": { + "version": "4.0.18", + "resolved": "https://registry.npmmirror.com/@vitest/expect/-/expect-4.0.18.tgz", + "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.0.18", + "resolved": "https://registry.npmmirror.com/@vitest/mocker/-/mocker-4.0.18.tgz", + "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.0.18", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.0.18", + "resolved": "https://registry.npmmirror.com/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", + "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.0.18", + "resolved": "https://registry.npmmirror.com/@vitest/runner/-/runner-4.0.18.tgz", + "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.0.18", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.0.18", + "resolved": "https://registry.npmmirror.com/@vitest/snapshot/-/snapshot-4.0.18.tgz", + "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.18", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.0.18", + "resolved": "https://registry.npmmirror.com/@vitest/spy/-/spy-4.0.18.tgz", + "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "4.0.18", + "resolved": "https://registry.npmmirror.com/@vitest/utils/-/utils-4.0.18.tgz", + "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.18", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "node_modules/@xmldom/xmldom": { "version": "0.8.11", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", @@ -3249,6 +4205,22 @@ "node": ">= 14" } }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/anser": { "version": "1.4.10", "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", @@ -3371,6 +4343,16 @@ "util": "^0.12.5" } }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", @@ -3897,6 +4879,16 @@ ], "license": "CC-BY-4.0" }, + "node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4670,6 +5662,13 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -4682,6 +5681,48 @@ "node": ">= 0.4" } }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -4722,6 +5763,16 @@ "node": ">=4" } }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -4746,6 +5797,16 @@ "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==", "license": "MIT" }, + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/expo": { "version": "54.0.32", "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.32.tgz", @@ -4836,6 +5897,107 @@ "react-native": "*" } }, + "node_modules/expo-crypto": { + "version": "15.0.8", + "resolved": "https://registry.npmmirror.com/expo-crypto/-/expo-crypto-15.0.8.tgz", + "integrity": "sha512-aF7A914TB66WIlTJvl5J6/itejfY78O7dq3ibvFltL9vnTALJ/7LYHvLT4fwmx9yUNS6ekLBtDGWivFWnj2Fcw==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-client": { + "version": "6.0.20", + "resolved": "https://registry.npmmirror.com/expo-dev-client/-/expo-dev-client-6.0.20.tgz", + "integrity": "sha512-5XjoVlj1OxakNxy55j/AUaGPrDOlQlB6XdHLLWAw61w5ffSpUDHDnuZzKzs9xY1eIaogOqTOQaAzZ2ddBkdXLA==", + "license": "MIT", + "dependencies": { + "expo-dev-launcher": "6.0.20", + "expo-dev-menu": "7.0.18", + "expo-dev-menu-interface": "2.0.0", + "expo-manifests": "~1.0.10", + "expo-updates-interface": "~2.0.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-launcher": { + "version": "6.0.20", + "resolved": "https://registry.npmmirror.com/expo-dev-launcher/-/expo-dev-launcher-6.0.20.tgz", + "integrity": "sha512-a04zHEeT9sB0L5EB38fz7sNnUKJ2Ar1pXpcyl60Ki8bXPNCs9rjY7NuYrDkP/irM8+1DklMBqHpyHiLyJ/R+EA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.11.0", + "expo-dev-menu": "7.0.18", + "expo-manifests": "~1.0.10" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-menu": { + "version": "7.0.18", + "resolved": "https://registry.npmmirror.com/expo-dev-menu/-/expo-dev-menu-7.0.18.tgz", + "integrity": "sha512-4kTdlHrnZCAWCT6tZRQHSSjZ7vECFisL4T+nsG/GJDo/jcHNaOVGV5qPV9wzlTxyMk3YOPggRw4+g7Ownrg5eA==", + "license": "MIT", + "dependencies": { + "expo-dev-menu-interface": "2.0.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-menu-interface": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/expo-dev-menu-interface/-/expo-dev-menu-interface-2.0.0.tgz", + "integrity": "sha512-BvAMPt6x+vyXpThsyjjOYyjwfjREV4OOpQkZ0tNl+nGpsPfcY9mc6DRACoWnH9KpLzyIt3BOgh3cuy/h/OxQjw==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-device": { + "version": "8.0.10", + "resolved": "https://registry.npmmirror.com/expo-device/-/expo-device-8.0.10.tgz", + "integrity": "sha512-jd5BxjaF7382JkDMaC+P04aXXknB2UhWaVx5WiQKA05ugm/8GH5uaz9P9ckWdMKZGQVVEOC8MHaUADoT26KmFA==", + "license": "MIT", + "dependencies": { + "ua-parser-js": "^0.7.33" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-device/node_modules/ua-parser-js": { + "version": "0.7.41", + "resolved": "https://registry.npmmirror.com/ua-parser-js/-/ua-parser-js-0.7.41.tgz", + "integrity": "sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, "node_modules/expo-file-system": { "version": "19.0.21", "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.21.tgz", @@ -4860,6 +6022,12 @@ "react-native": "*" } }, + "node_modules/expo-json-utils": { + "version": "0.15.0", + "resolved": "https://registry.npmmirror.com/expo-json-utils/-/expo-json-utils-0.15.0.tgz", + "integrity": "sha512-duRT6oGl80IDzH2LD2yEFWNwGIC2WkozsB6HF3cDYNoNNdUvFk6uN3YiwsTsqVM/D0z6LEAQ01/SlYvN+Fw0JQ==", + "license": "MIT" + }, "node_modules/expo-keep-awake": { "version": "15.0.8", "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-15.0.8.tgz", @@ -4908,6 +6076,19 @@ "react": "*" } }, + "node_modules/expo-manifests": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/expo-manifests/-/expo-manifests-1.0.10.tgz", + "integrity": "sha512-oxDUnURPcL4ZsOBY6X1DGWGuoZgVAFzp6PISWV7lPP2J0r8u1/ucuChBgpK7u1eLGFp6sDIPwXyEUCkI386XSQ==", + "license": "MIT", + "dependencies": { + "@expo/config": "~12.0.11", + "expo-json-utils": "~0.15.0" + }, + "peerDependencies": { + "expo": "*" + } + }, "node_modules/expo-modules-autolinking": { "version": "3.0.24", "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.24.tgz", @@ -5244,6 +6425,15 @@ "react-native": "*" } }, + "node_modules/expo-updates-interface": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/expo-updates-interface/-/expo-updates-interface-2.0.0.tgz", + "integrity": "sha512-pTzAIufEZdVPKql6iMi5ylVSPqV1qbEopz9G6TSECQmnNde2nwq42PxdFBaUEd8IZJ/fdJLQnOT3m6+XJ5s7jg==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, "node_modules/expo-web-browser": { "version": "15.0.10", "resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-15.0.10.tgz", @@ -5419,6 +6609,22 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "license": "MIT" }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -5827,6 +7033,21 @@ "hermes-estree": "0.29.1" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/hosted-git-info": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", @@ -6476,6 +7697,12 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "license": "MIT" }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -6932,6 +8159,16 @@ "yallist": "^3.0.2" } }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -7618,6 +8855,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -7960,6 +9208,13 @@ "node": ">=8" } }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -8010,22 +9265,6 @@ "node": ">=4.0.0" } }, - "node_modules/pnpm": { - "version": "10.28.2", - "resolved": "https://registry.npmjs.org/pnpm/-/pnpm-10.28.2.tgz", - "integrity": "sha512-QYcvA3rSL3NI47Heu69+hnz9RI8nJtnPdMCPGVB8MdLI56EVJbmD/rwt9kC1Q43uYCPrsfhO1DzC1lTSvDJiZA==", - "license": "MIT", - "bin": { - "pnpm": "bin/pnpm.cjs", - "pnpx": "bin/pnpx.cjs" - }, - "engines": { - "node": ">=18.12" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", @@ -8360,6 +9599,21 @@ } } }, + "node_modules/react-native-gesture-handler": { + "version": "2.30.0", + "resolved": "https://registry.npmmirror.com/react-native-gesture-handler/-/react-native-gesture-handler-2.30.0.tgz", + "integrity": "sha512-5YsnKHGa0X9C8lb5oCnKm0fLUPM6CRduvUUw2Bav4RIj/C3HcFh4RIUnF8wgG6JQWCL1//gRx4v+LVWgcIQdGA==", + "license": "MIT", + "dependencies": { + "@egjs/hammerjs": "^2.0.17", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, "node_modules/react-native-is-edge-to-edge": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.2.1.tgz", @@ -8937,6 +10191,51 @@ "node": "*" } }, + "node_modules/rollup": { + "version": "4.57.1", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.57.1.tgz", + "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.57.1", + "@rollup/rollup-android-arm64": "4.57.1", + "@rollup/rollup-darwin-arm64": "4.57.1", + "@rollup/rollup-darwin-x64": "4.57.1", + "@rollup/rollup-freebsd-arm64": "4.57.1", + "@rollup/rollup-freebsd-x64": "4.57.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", + "@rollup/rollup-linux-arm-musleabihf": "4.57.1", + "@rollup/rollup-linux-arm64-gnu": "4.57.1", + "@rollup/rollup-linux-arm64-musl": "4.57.1", + "@rollup/rollup-linux-loong64-gnu": "4.57.1", + "@rollup/rollup-linux-loong64-musl": "4.57.1", + "@rollup/rollup-linux-ppc64-gnu": "4.57.1", + "@rollup/rollup-linux-ppc64-musl": "4.57.1", + "@rollup/rollup-linux-riscv64-gnu": "4.57.1", + "@rollup/rollup-linux-riscv64-musl": "4.57.1", + "@rollup/rollup-linux-s390x-gnu": "4.57.1", + "@rollup/rollup-linux-x64-gnu": "4.57.1", + "@rollup/rollup-linux-x64-musl": "4.57.1", + "@rollup/rollup-openbsd-x64": "4.57.1", + "@rollup/rollup-openharmony-arm64": "4.57.1", + "@rollup/rollup-win32-arm64-msvc": "4.57.1", + "@rollup/rollup-win32-ia32-msvc": "4.57.1", + "@rollup/rollup-win32-x64-gnu": "4.57.1", + "@rollup/rollup-win32-x64-msvc": "4.57.1", + "fsevents": "~2.3.2" + } + }, "node_modules/rtl-detect": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz", @@ -9189,6 +10488,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -9328,6 +10634,13 @@ "node": ">=8" } }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, "node_modules/stackframe": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", @@ -9355,6 +10668,13 @@ "node": ">= 0.6" } }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmmirror.com/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, "node_modules/stream-buffers": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", @@ -9696,6 +11016,23 @@ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "license": "MIT" }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -9741,6 +11078,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/tinyrainbow": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -10250,6 +11597,232 @@ } } }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmmirror.com/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vite/node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/vitest": { + "version": "4.0.18", + "resolved": "https://registry.npmmirror.com/vitest/-/vitest-4.0.18.tgz", + "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.0.18", + "@vitest/mocker": "4.0.18", + "@vitest/pretty-format": "4.0.18", + "@vitest/runner": "4.0.18", + "@vitest/snapshot": "4.0.18", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "es-module-lexer": "^1.7.0", + "expect-type": "^1.2.2", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^3.10.0", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.0.18", + "@vitest/browser-preview": "4.0.18", + "@vitest/browser-webdriverio": "4.0.18", + "@vitest/ui": "4.0.18", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vlq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", @@ -10370,6 +11943,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wonka": { "version": "6.3.5", "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.5.tgz", diff --git a/client/package.json b/client/package.json index 3dc31be..c4e7831 100644 --- a/client/package.json +++ b/client/package.json @@ -4,10 +4,14 @@ "version": "1.0.0", "scripts": { "start": "expo start", + "start:clean": "expo start -c", "android": "expo run:android", "ios": "expo run:ios --scheme \"Hey Mama\"", + "ios:clean": "npm run clean:cache && npm run clean:ios-build && expo run:ios --scheme \"Hey Mama\"", "web": "expo start --web", - "test": "vitest run" + "test": "vitest run", + "clean:cache": "rm -rf node_modules/.cache .expo 2>/dev/null; echo 'Cleared .expo and node_modules/.cache'", + "clean:ios-build": "rm -rf ~/Library/Developer/Xcode/DerivedData/client-* 2>/dev/null; echo 'Cleared Xcode DerivedData for client'" }, "dependencies": { "@expo/vector-icons": "^15.0.3", diff --git a/client/src/i18n/ALL_COPY.md b/client/src/i18n/ALL_COPY.md index 57ccc86..fe0156f 100644 --- a/client/src/i18n/ALL_COPY.md +++ b/client/src/i18n/ALL_COPY.md @@ -1,22 +1,25 @@ -## 应用文案总表(请在此文件对应的 JSON 中修改) +## 應用文案總表(請在對應 JSON 中修改) -**单一文案源文件**:`client/src/i18n/locales/all.json` +### 語言與檔案對應(單一來源,避免多檔覆蓋) -- **English**:`all.json` 的 `en` -- **繁体中文**:`all.json` 的 `zh-TW` +| 語言 | 實際使用的檔案 | 說明 | +|------------|-----------------------------|------| +| **英文** | `locales/all.json` 的 `en` | 只改 all.json 的 `en` 區塊 | +| **繁體中文** | `locales/zh-TW.json` | **唯一來源**,Onboarding / 開屏 consent 等繁中文案只改此檔 | -> 说明:项目运行时只读取 `all.json`;请不要再改 `locales/en.json`、`locales/zh-TW.json`(它们已不再作为运行时数据源)。 +- 運行時 **繁中(zh-TW)只讀取 `zh-TW.json`**,不會讀取 `all.json` 的 zh-TW 區塊。 +- 修改 JSON 後需**重新載入 App**(模擬器 `Cmd+R`)或重啟 Metro(必要時加 `--clear`)才會看到新文案。 +- **若修改 zh-TW.json 後開屏 consent 仍顯示舊文案**:請執行 `npm run clean:cache`,再以 `npm run start:clean` 啟動 Metro(或先刪除模擬器上的 App 再執行 `npm run ios:clean`),確保吃到最新 bundle。 -### 快速索引(高频文案) +### 快速索引(高頻文案) +- **開屏 / 協議**:`consent.*`(**繁中只改 zh-TW.json**:`consent.title`、`consent.subtitle`、`consent.subtitleSecondary`、agree, privacy, terms, notice…) +- **Onboarding 問卷**:`onboardingSurvey.steps.*`(name.title, status.title, status.options.* …) +- **Onboarding 招呼語**:`onboardingSurvey.greeting`(例:Hi {{name}},) - **Home**:`home.*` - **Push 提示**:`push.*` -- **主题**:`theme.*` -- **我的/Profile**:`profile.*` +- **主題**:`theme.*` +- **我的 / Profile**:`profile.*` - **收藏**:`favorites.*` -- **设置**:`settings.*` -- **Onboarding(问卷)**:`onboardingSurvey.steps.*` -- **Onboarding(兴趣)**:`intent.*` +- **設定**:`settings.*` - **Mock 文案**:`mock.*` - - diff --git a/client/src/i18n/index.ts b/client/src/i18n/index.ts index 6fb1e42..49f897b 100644 --- a/client/src/i18n/index.ts +++ b/client/src/i18n/index.ts @@ -6,8 +6,12 @@ import { initReactI18next } from 'react-i18next'; import { isTraditionalChineseLocaleTag } from './locale'; // 用 require 避免 TS 的 json module 配置差异导致无法编译 +// 繁中(zh-TW)唯一來源:locales/zh-TW.json,修改 Onboarding/開屏等繁中文案請只改該檔案 +// 本 App 未載入 zh-CN.json;若看到類似「你本就完美」「一切都会变好」等簡中 consent 文案,為舊 bundle 快取導致,請執行 clean:cache + start:clean 或卸載 App 重裝。 // eslint-disable-next-line @typescript-eslint/no-var-requires const all = require('./locales/all.json') as { en: Record; 'zh-TW': Record }; +// eslint-disable-next-line @typescript-eslint/no-var-requires +const zhTW = require('./locales/zh-TW.json') as Record; /** * 语言码约定: @@ -81,7 +85,8 @@ export async function initI18n(): Promise { await i18n.use(initReactI18next).init({ resources: { - 'zh-TW': { translation: all['zh-TW'] as any }, + // 繁中唯一來源:zh-TW.json(all.json 的 zh-TW 區塊不會被載入) + 'zh-TW': { translation: zhTW }, en: { translation: all.en as any }, }, lng: initialLang, @@ -91,6 +96,18 @@ export async function initI18n(): Promise { escapeValue: false, }, }); + + // 臨時 debug:確認實際使用的 language 與 consent.title 值(方便驗證繁中來自 zh-TW.json) + if (typeof __DEV__ !== 'undefined' && __DEV__) { + const consentTitle = i18n.t('consent.title'); + console.log( + '[i18n] 已初始化 language=', + i18n.language, + '| consent.title=', + consentTitle, + '| 繁中來源=zh-TW.json,英文來源=all.json 的 en 區塊' + ); + } } /** diff --git a/client/src/i18n/locales/all.json b/client/src/i18n/locales/all.json index 054f664..6ad19c4 100644 --- a/client/src/i18n/locales/all.json +++ b/client/src/i18n/locales/all.json @@ -146,6 +146,7 @@ "consent": { "title": "Hey mama.", "subtitle": "You’re doing okay\nright now.", + "subtitleSecondary": "", "agree": "Agree & Continue", "privacy": "Privacy Policy", "terms": "Terms of Use", @@ -196,19 +197,19 @@ "q4Desc": "你可以直接跳過,我們會在之後繼續陪你。" }, "onboardingSurvey": { - "greeting": "{{name}},你好", + "greeting": "Hi {{name}},", "steps": { - "name": { "title": "我可以怎麼稱呼你?", "placeholder": "媽媽" }, + "name": { "title": "怎麼稱呼你呢?", "placeholder": "媽媽" }, "status": { - "title": "媽媽的狀態?", + "title": "你現在正處在哪個階段呢?", "options": { - "pregnant": "懷孕中/準備成為媽媽", + "pregnant": "懷孕中/正在準備迎接寶寶", "has_kids": "已經有孩子", - "no_fill": "不想填寫" + "no_fill": "我暫時不想說" } }, "emotion": { - "title": "當下情緒狀態?", + "title": "今天的你,還好嗎?", "options": { "happy": "愉悅、滿足", "calm": "平靜、安穩", @@ -315,8 +316,9 @@ "widgetDesc": "把溫柔提醒放到桌面上:長按主畫面 → 點「+」 → 搜尋「正念」 → 添加你喜歡的尺寸。" }, "consent": { - "title": "你很完美。", - "subtitle": "一切\n都會更好。", + "title": "我們知道,", + "subtitle": "當媽媽很不容易。", + "subtitleSecondary": "這裡給你一些溫柔的肯定與提醒", "agree": "同意並繼續", "privacy": "隱私協議", "terms": "用戶使用協議", diff --git a/client/src/i18n/locales/zh-TW.json b/client/src/i18n/locales/zh-TW.json index b773ef7..68ef478 100644 --- a/client/src/i18n/locales/zh-TW.json +++ b/client/src/i18n/locales/zh-TW.json @@ -2,7 +2,11 @@ "common": { "ok": "確定", "cancel": "取消", - "back": "返回" + "back": "返回", + "error": "錯誤", + "notice": "提示", + "openLinkError": "無法打開鏈接", + "close": "關閉" }, "onboarding": { "title": "歡迎", @@ -19,6 +23,64 @@ "q4Title": "給自己一句溫柔的話", "q4Desc": "你可以直接跳過,我們會在之後繼續陪你。" }, + "onboardingSurvey": { + "greeting": "Hi {{name}},", + "steps": { + "name": { + "title": "怎麼稱呼你呢?", + "placeholder": "媽媽" + }, + "status": { + "title": "你現在正處在哪個階段呢?", + "options": { + "pregnant": "懷孕中/正在準備迎接寶寶", + "has_kids": "已經有孩子", + "no_fill": "我暫時不想說" + } + }, + "emotion": { + "title": "今天的你,還好嗎?", + "options": { + "happy": "愉悅、滿足", + "calm": "平靜、安穩", + "okay": "還可以、普通", + "tired": "疲累、沒什麼力氣", + "stressed": "被壓得有點喘不過氣", + "low": "情緒低落" + } + }, + "influence": { + "title": "是什麼影響了你最近的感受?", + "options": { + "family": "家庭與孩子", + "work": "工作或學習", + "relationship": "親密關係", + "friends": "朋友與人際", + "health": "身心健康" + } + }, + "support": { + "title": "最需要什麼支持?", + "options": { + "emotional": "情緒支持", + "parenting": "育兒壓力", + "self_worth": "自我價值", + "anxiety": "焦慮舒緩", + "balance": "休息與平衡" + } + }, + "reminder": { + "title": "你希望一天收到幾次肯定語?" + } + } + }, + "intent": { + "title": "你希望得到什麼幫助?", + "love": "愛情", + "life": "生活", + "travel": "旅遊", + "work": "職場" + }, "push": { "title": "通知", "cardTitle": "開啟溫柔提醒", @@ -41,7 +103,8 @@ "theme": { "title": "主題", "scenery": "風景", - "color": "顏色" + "color": "顏色", + "suixin": "隨心" }, "profile": { "title": "我的", @@ -66,12 +129,16 @@ "widget": { "lockScreen": "鎖屏小工具", "homeScreen": "桌面小工具", + "howToTitle": "如何添加小工具", + "howToDesc1": "長按主畫面空白處進入編輯,點左上角「+」新增小工具。", + "howToDesc2": "搜尋「正念」,選擇喜歡的尺寸,點「加入小工具」。", "previewDate": "1月29日週四 · 已至臘月十一", "previewQuote": "我也對現在的自己感到滿意,即使我仍在努力成為想成為的人。" }, "favorites": { "title": "收藏夾", - "empty": "這裡還沒有收藏內容。" + "empty": "這裡還沒有收藏內容。", + "unknownText": "這條文案暫時無法顯示。" }, "settings": { "title": "設定", @@ -81,9 +148,30 @@ "widgetDesc": "把溫柔提醒放到桌面上:長按主畫面 → 點「+」 → 搜尋「正念」 → 添加你喜歡的尺寸。" }, "consent": { + "title": "我們知道,", + "subtitle": "當媽媽很不容易。", + "subtitleSecondary": "這裡給你一些溫柔的肯定與提醒", "agree": "同意並繼續", "privacy": "隱私協議", - "terms": "用戶使用協議" + "terms": "用戶使用協議", + "notice": "繼續使用即代表你同意《隱私協議》與《用戶使用協議》。", + "noticeRich": "繼續使用即代表你同意《{{privacyLabel}}》{{privacySuffix}}《{{termsLabel}}》{{termsSuffix}}。", + "linkUnavailable": "協議鏈接載入失敗,請檢查網路後重試。", + "linkUnavailableDev": "協議鏈接載入失敗,請檢查網路或 API_BASE_URL 設定:{{baseUrl}}", + "linkLoadingSuffix": "(載入中…)" + }, + "permissions": { + "notificationsDenied": "系統權限已被拒絕,請前往手機設定開啟通知。" + }, + "language": { + "zhTW": "繁體中文", + "en": "English" + }, + "mock": { + "c1": "你已經很努力了,今天也值得被溫柔對待。", + "c2": "深呼吸三次,把注意力帶回當下。", + "c3": "允許自己慢一點,情緒會像雲一樣飄過。", + "c4": "你不需要完美,你已經足夠好。", + "c5": "把手放在心口,對自己說一句:辛苦了。" } -} - +} \ No newline at end of file diff --git a/spec_kit/Splash Consent/overflow.md b/spec_kit/Splash Consent/overflow.md new file mode 100644 index 0000000..eb96333 --- /dev/null +++ b/spec_kit/Splash Consent/overflow.md @@ -0,0 +1,31 @@ +# Splash Consent 補充說明 + +## i18n 開屏 consent 文案不生效(排查與修復記錄) + +### 現象 +- iOS 模擬器繁中開屏一直顯示舊文案(如「你很完美。」「一切 都會更好。」) +- 修改 zh-TW.json 的 consent.title/subtitle 後重跑 `npm run ios` 仍不生效 +- 專案內搜尋「你很完美」找不到(舊文案來自快取) + +### 排查結論 + +1. **舊文案來源** + - 專案內**沒有**「你很完美」「一切 都會更好」的完整句 + - `zh-CN.json` 有近似句「你本就完美。」「一切都会变好。」,但 **App 的 i18n 未載入 zh-CN**,僅載入 `zh-TW`(zh-TW.json)與 `en`(all.json 的 en 區塊) + - 結論:舊文案來自 **Metro / JS bundle 或 iOS 建置快取**(曾打包進去的舊 JSON) + +2. **語言與載入順序**(`client/src/i18n/index.ts`) + - `resources`:`zh-TW` → `zh-TW.json`;`en` → `all.json` 的 `en` + - **all.json 的 zh-TW 區塊不會被載入**,繁中唯一來源為 `zh-TW.json` + - 裝置語言經 `expo-localization.getLocales()[0].languageTag` 取得,經 `normalizeDeviceLanguageTagToAppLanguage` 對應到 `zh-TW` 或 `en`(zh-Hant / zh-TW / zh-HK 等均對應 zh-TW) + +3. **修復與預防** + - 已加臨時 debug log:i18n 初始化與開屏 consent 畫面會印出 `language` 與 `consent.title`(僅 __DEV__) + - 已加 `clean:cache`、`start:clean`、`ios:clean` script;若改 zh-TW 仍不生效,請執行清理後重啟或卸載 App 重裝 + - 繁中 consent 文案**只改** `client/src/i18n/locales/zh-TW.json` 的 `consent.title`、`consent.subtitle`、`consent.subtitleSecondary` + +### 修改的檔案(本次修復) +- `client/src/i18n/index.ts`:註解 + __DEV__ 下印出 language 與 consent.title +- `client/app/(splash)/splash.tsx`:useTranslation 取 i18n + __DEV__ 下印出 consent 畫面時的 language / title / subtitle +- `client/package.json`:`start:clean`、`ios:clean`、`clean:cache` +- `client/src/i18n/ALL_COPY.md`:故障排除與 consent 繁中只改 zh-TW.json 的說明 -- 2.49.1 From 1fbc0aa3f8feb7f30060451100129e1d1741395d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=96=B0=E9=9B=A8?= Date: Tue, 10 Feb 2026 15:06:50 +0800 Subject: [PATCH 04/19] =?UTF-8?q?fix:=E9=87=8D=E5=A4=8D=E7=82=B9=E5=87=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/app/(app)/home.tsx | 121 ++++++++++++++---- client/app/(onboarding)/onboarding.tsx | 16 +++ client/app/_layout.tsx | 14 +- client/assets/images/splashScreen.png | Bin 128610 -> 0 bytes client/components/home/ProfileModal.tsx | 9 +- client/components/onboarding/ReminderStep.tsx | 44 ++++++- client/src/constants/env.ts | 2 +- client/src/services/pushApi.ts | 24 +++- client/src/storage/appStorage.ts | 35 ++++- spec_kit/overview.md | 7 + 10 files changed, 236 insertions(+), 36 deletions(-) delete mode 100644 client/assets/images/splashScreen.png diff --git a/client/app/(app)/home.tsx b/client/app/(app)/home.tsx index b64c666..97609ae 100644 --- a/client/app/(app)/home.tsx +++ b/client/app/(app)/home.tsx @@ -113,6 +113,18 @@ export default function HomeScreen() { const [cardWidth, setCardWidth] = useState(null); const [wrappedText, setWrappedText] = useState(''); const wrapLogRef = useRef<{ key: string } | null>(null); + const busyRef = useRef(false); + const indexRef = useRef(0); + const currentFeedRef = useRef([]); + const likedIdsRef = useRef>(new Set()); + const likeInFlightRef = useRef(false); + + useEffect(() => { + busyRef.current = busy; + }, [busy]); + useEffect(() => { + indexRef.current = index; + }, [index]); // 解决语言切换时重复触发拉取/清空导致“文案不停跳动”的问题: // 用 ref 持有最新状态,避免 useCallback 依赖 feedItems/isFetching 造成函数 identity 变化 → effect 重复执行 @@ -183,6 +195,9 @@ export default function HomeScreen() { text: t(item.textKey) })); }, [feedItems, t]); + useEffect(() => { + currentFeedRef.current = currentFeed; + }, [currentFeed]); const item = useMemo(() => { const data = currentFeed[index % currentFeed.length]; @@ -430,24 +445,60 @@ export default function HomeScreen() { transform: [{ scale: likeScale.value }], })); + const setBusySafe = useCallback((next: boolean) => { + busyRef.current = next; + setBusy(next); + }, []); + + const setLikeInFlight = useCallback((next: boolean) => { + likeInFlightRef.current = next; + }, []); + + const syncLikeFilledByIndex = useCallback((nextIndex: number) => { + const list = currentFeedRef.current; + const len = list.length; + if (!len) { + setLikeFilled(false); + return; + } + const safe = ((nextIndex % len) + len) % len; + const nextId = String(list[safe]?.content_id); + setLikeFilled(likedIdsRef.current.has(nextId)); + }, []); + + const applyIndexChange = useCallback((nextIndex: number) => { + indexRef.current = nextIndex; + setIndex(nextIndex); + syncLikeFilledByIndex(nextIndex); + }, [syncLikeFilledByIndex]); + + const maybeFetchNewFeedIfNeeded = useCallback((nextIndex: number) => { + const len = currentFeedRef.current.length; + if (!len) return; + // 当接近当前列表末尾时(例如还剩 5 条)提前拉取 + if (nextIndex + 5 >= len && !isFetchingRef.current) { + fetchNewFeed(); + } + }, [fetchNewFeed]); + // 切换到下一条文案的统一动画逻辑 const triggerNextContent = useCallback(() => { - if (busy) return; - setBusy(true); + if (busyRef.current) return; + setBusySafe(true); + + // 注意:不要在 Reanimated worklet 回调里读取 React ref(例如 indexRef/currentFeedRef),会导致值不更新或异常 + const nextIndex = indexRef.current + 1; // 1. 当前文案向上移动并消失 translateY.value = withTiming(-40, { duration: 300, easing: Easing.out(Easing.quad) }); opacity.value = withTiming(0, { duration: 300 }, (finished) => { if (finished) { // 2. 切换数据索引 - runOnJS(setIndex)(index + 1); - runOnJS(setLikeFilled)(false); + runOnJS(applyIndexChange)(nextIndex); runOnJS(advanceSuixinOnNextContent)(); - // 检查是否需要拉取新文案(当接近当前列表末尾时,例如还剩 5 条) - if (index + 5 >= currentFeed.length && !isFetching) { - runOnJS(fetchNewFeed)(); - } + // 检查是否需要拉取新文案(注意:不要把匿名函数塞进 runOnJS,可能导致原生崩溃) + runOnJS(maybeFetchNewFeedIfNeeded)(nextIndex); // 3. 准备下一条文案:先瞬移到下方 40pt translateY.value = 40; @@ -456,26 +507,29 @@ export default function HomeScreen() { translateY.value = withTiming(0, { duration: 400, easing: Easing.out(Easing.back(1)) }); opacity.value = withTiming(1, { duration: 400 }, (finished) => { if (finished) { - runOnJS(setBusy)(false); + runOnJS(setBusySafe)(false); } }); } }); - }, [busy, index, currentFeed.length, isFetching, fetchNewFeed, translateY, opacity]); + }, [applyIndexChange, setBusySafe, translateY, opacity, advanceSuixinOnNextContent, maybeFetchNewFeedIfNeeded]); // 切换到上一条文案的统一动画逻辑(下滑触发) const triggerPrevContent = useCallback(() => { - if (busy) return; - setBusy(true); + if (busyRef.current) return; + setBusySafe(true); + + // 注意:同上,不要在 worklet 里读取 React ref + const len = currentFeedRef.current.length; + const raw = indexRef.current - 1; + const nextIndex = len ? ((raw % len) + len) % len : Math.max(0, raw); // 1. 当前文案向下移动并消失 translateY.value = withTiming(40, { duration: 300, easing: Easing.out(Easing.quad) }); opacity.value = withTiming(0, { duration: 300 }, (finished) => { if (finished) { // 2. 切换数据索引(循环回退) - const nextIndex = index - 1 < 0 ? Math.max(0, currentFeed.length - 1) : index - 1; - runOnJS(setIndex)(nextIndex); - runOnJS(setLikeFilled)(false); + runOnJS(applyIndexChange)(nextIndex); // 3. 准备上一条文案:先瞬移到上方 40pt translateY.value = -40; @@ -484,12 +538,12 @@ export default function HomeScreen() { translateY.value = withTiming(0, { duration: 400, easing: Easing.out(Easing.back(1)) }); opacity.value = withTiming(1, { duration: 400 }, (finished) => { if (finished) { - runOnJS(setBusy)(false); + runOnJS(setBusySafe)(false); } }); } }); - }, [busy, index, currentFeed.length, translateY, opacity]); + }, [applyIndexChange, setBusySafe, translateY, opacity]); const lastTapRef = useRef(0); @@ -533,7 +587,21 @@ export default function HomeScreen() { ).current; async function onPressLike() { - if (busy) return; + if (busyRef.current) return; + if (likeInFlightRef.current) return; + + // 已经喜欢过:不重复写入收藏,直接当作“下一条” + if (likeFilled || likedIdsRef.current.has(item.id)) { + triggerNextContent(); + return; + } + + likeInFlightRef.current = true; + + const likedItemId = item.id; + const likedItemText = item.text; + // 先记下“已喜欢”,保证回退时能恢复点亮状态(即便异步保存稍后才完成) + likedIdsRef.current.add(likedItemId); setLikeFilled(true); // 1. 获取当前日期 @@ -543,24 +611,33 @@ export default function HomeScreen() { // 2. 保存到收藏夹,包含当前背景信息 const favItem = { favId: String(Date.now()), // 生成唯一 ID - id: item.id, - text: item.text, + id: likedItemId, + text: likedItemText, date: dateStr, themeMode: themeMode, background: themeMode === 'scenery' ? String(natureImageIndex) : backgroundColor, }; console.log('Home: Triggering addFavorite', JSON.stringify(favItem)); - await addFavorite(favItem); + try { + await addFavorite(favItem); + } catch (error) { + console.error('Home: addFavorite 失败', error); + } // 3. 记录到后端 Reaction(喜欢) console.log('Home: Triggering setReaction', item.id); - await setReaction(item.id, 'like'); + try { + await setReaction(item.id, 'like'); + } catch (error) { + console.error('Home: setReaction 失败', error); + } // 4. 爱心缩放动画 likeScale.value = withSequence( withTiming(0.8, { duration: 100 }), withTiming(1.2, { duration: 150 }), withTiming(1, { duration: 100 }, (finished) => { + runOnJS(setLikeInFlight)(false); if (finished) { console.log('Home: Like animation finished, triggering next content'); runOnJS(triggerNextContent)(); diff --git a/client/app/(onboarding)/onboarding.tsx b/client/app/(onboarding)/onboarding.tsx index 29664fe..f4b2e98 100644 --- a/client/app/(onboarding)/onboarding.tsx +++ b/client/app/(onboarding)/onboarding.tsx @@ -44,6 +44,7 @@ export default function OnboardingScreen() { const [name, setName] = useState(''); const [selections, setSelections] = useState>({}); const [reminderTimes, setReminderTimes] = useState(3); + const [finishing, setFinishing] = useState(false); const currentStep = STEPS[stepIndex]; const currentTitle = useMemo(() => t(`onboardingSurvey.steps.${currentStep.id}.title`), [t, currentStep.id]); @@ -56,6 +57,9 @@ export default function OnboardingScreen() { }, [t, currentStep]); async function onFinish() { + if (finishing) return; + setFinishing(true); + try { // 用户选择每日次数 > 0:在此页直接触发系统通知权限(已移除单独的 push 引导页)。 const wantsPush = reminderTimes > 0; @@ -159,9 +163,17 @@ export default function OnboardingScreen() { } finally { router.replace('/(app)/home'); } + } catch (e) { + // 极端情况下(例如本地存储/初始化异常)避免卡死在 loading:提示并允许用户重试 + const msg = e instanceof Error ? e.message : String(e); + console.warn('[OnboardingFinish] 异常:', msg); + Alert.alert(t('push.errorTitle'), t('push.errorDesc')); + setFinishing(false); + } } const onNext = () => { + if (finishing) return; if (stepIndex < STEPS.length - 1) { setStepIndex(stepIndex + 1); } else { @@ -170,6 +182,7 @@ export default function OnboardingScreen() { }; const onBack = () => { + if (finishing) return; if (stepIndex > 0) { setStepIndex(stepIndex - 1); } @@ -177,6 +190,7 @@ export default function OnboardingScreen() { /** 只跳過當前這一步(不填/不選當前題,進入下一步) */ const handleSkipCurrentStep = () => { + if (finishing) return; if (currentStep.type === 'name') { onNext(); } else if (currentStep.type === 'selection') { @@ -200,6 +214,7 @@ export default function OnboardingScreen() { }; const handleSkipStep = () => { + if (finishing) return; setSelections((prev) => ({ ...prev, [currentStep.id]: [] })); onNext(); }; @@ -236,6 +251,7 @@ export default function OnboardingScreen() { value={Math.max(1, reminderTimes)} onChange={setReminderTimes} onFinish={onFinish} + loading={finishing} onSkip={() => { // 跳过每日提醒:视为 0 次(关闭) setReminderTimes(0); diff --git a/client/app/_layout.tsx b/client/app/_layout.tsx index 2e3b819..c9f09dc 100644 --- a/client/app/_layout.tsx +++ b/client/app/_layout.tsx @@ -12,6 +12,7 @@ import { useColorScheme } from '@/components/useColorScheme'; import { initI18n } from '@/src/i18n'; import { ensureDailyWidgetRecoUpToDate, syncWidgetConfig, syncWidgetUserProfileFromStorage } from '@/src/modules/dailyWidgetReco'; import { getOrCreateClientUserId } from '@/src/storage/appStorage'; +import { ensurePushTokenRegisteredIfPermitted } from '@/src/services/pushApi'; // 配置通知处理方式(即使不发送也建议配置,以确保权限接口正常) Notifications.setNotificationHandler({ @@ -75,6 +76,17 @@ export default function RootLayout() { }); }, []); + useEffect(() => { + // 只要系统通知权限已经 granted,就主动上报 Push Token(不依赖用户在“每日提醒”里点确认) + ensurePushTokenRegisteredIfPermitted() + .then((res) => { + if (__DEV__) console.log('[push_token_sync]', res); + }) + .catch((e) => { + if (__DEV__) console.warn('[push_token_sync] 失败(不阻塞启动)', e); + }); + }, []); + useEffect(() => { // 字体与 i18n 都准备好后,允许渲染 App(原生 splash 的隐藏交给 onLayout,避免“硬切/闪白”) if (loaded && i18nReady) setAppReady(true); @@ -113,7 +125,7 @@ export default function RootLayout() { diff --git a/client/assets/images/splashScreen.png b/client/assets/images/splashScreen.png deleted file mode 100644 index c41c96f9abddf1542681ef5c6b7a8f8c09248f42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128610 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ΜUl3S5D4aICS{;5_L=;i9E?gMrG8l^Cy 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

-DN@!+lp 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 diff --git a/client/components/home/ProfileModal.tsx b/client/components/home/ProfileModal.tsx index 49b07e7..d484486 100644 --- a/client/components/home/ProfileModal.tsx +++ b/client/components/home/ProfileModal.tsx @@ -41,7 +41,7 @@ import QuestionIcon from '@/assets/images/home/Profile/widget/question_icon.svg' import * as Notifications from 'expo-notifications'; import { changeLanguage } from '@/src/i18n'; import { fetchLegalLinks } from '@/src/services/legalApi'; -import { getExpoPushTokenOrThrow, registerPushToken, setPushPreferences } from '@/src/services/pushApi'; +import { ensurePushTokenRegisteredIfPermitted, getExpoPushTokenOrThrow, registerPushToken, setPushPreferences } from '@/src/services/pushApi'; const { width } = Dimensions.get('window'); @@ -479,6 +479,13 @@ function DailyReminderPage({ visible, onDone }: { visible: boolean; onDone: () = const next: DailyReminderSettings = { timesPerDay: nextTimes, pushEnabled: nextEnabled }; await setDailyReminderSettings(next); + // 若系统权限已授予且用户意愿为开启:兜底同步一次 token(避免“没点开关/没触发 toggle 导致后端无 token”) + if (nextEnabled) { + ensurePushTokenRegisteredIfPermitted().catch(() => { + // ignore:不阻塞保存 + }); + } + // 同步后端偏好(幂等;失败不阻塞) try { await setPushPreferences({ enabled: nextEnabled, timesPerDay: nextTimes }); diff --git a/client/components/onboarding/ReminderStep.tsx b/client/components/onboarding/ReminderStep.tsx index a48b15a..7e9e61b 100644 --- a/client/components/onboarding/ReminderStep.tsx +++ b/client/components/onboarding/ReminderStep.tsx @@ -1,7 +1,8 @@ import React from 'react'; -import { View, StyleSheet, TouchableOpacity, Text, Platform } from 'react-native'; +import { View, StyleSheet, TouchableOpacity, Text, Platform, ActivityIndicator } from 'react-native'; import { useTranslation } from 'react-i18next'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; +import { LinearGradient } from 'expo-linear-gradient'; import { OnboardingColors } from '@/constants/OnboardingTheme'; import AddIcon from '@/assets/images/icon/add_icon.svg'; import ReduceIcon from '@/assets/images/icon/reduce_icon.svg'; @@ -12,9 +13,11 @@ interface ReminderStepProps { onChange: (value: number) => void; onFinish: () => void; onSkip?: () => void; + /** 完成后请求通知权限时的加载态 */ + loading?: boolean; } -export function ReminderStep({ value, onChange, onFinish }: ReminderStepProps) { +export function ReminderStep({ value, onChange, onFinish, loading = false }: ReminderStepProps) { const { t } = useTranslation(); const insets = useSafeAreaInsets(); @@ -30,7 +33,7 @@ export function ReminderStep({ value, onChange, onFinish }: ReminderStepProps) { return ( - + @@ -41,14 +44,27 @@ export function ReminderStep({ value, onChange, onFinish }: ReminderStepProps) { - + - - + + + {loading ? ( + + + + ) : ( + + )} + @@ -92,4 +108,20 @@ const styles = StyleSheet.create({ position: 'absolute', alignItems: 'center', }, + finishWrap: { + width: 87, + height: 57, + alignItems: 'center', + justifyContent: 'center', + }, + finishDisabled: { + opacity: 0.7, + }, + loadingPill: { + width: 87, + height: 57, + borderRadius: 28.5, + alignItems: 'center', + justifyContent: 'center', + }, }); diff --git a/client/src/constants/env.ts b/client/src/constants/env.ts index 0361ef4..b069af3 100644 --- a/client/src/constants/env.ts +++ b/client/src/constants/env.ts @@ -27,7 +27,7 @@ export type AppRuntimeEnv = 'local' | 'dev' | 'prod'; * 默认回退到 prod(避免误打到 localhost 导致真机“无法发起网络请求”)。 */ const DEFAULT_RUNTIME_ENV: AppRuntimeEnv = - typeof __DEV__ !== 'undefined' && __DEV__ ? 'local' : 'prod'; + typeof __DEV__ !== 'undefined' && __DEV__ ? 'local' : 'dev'; export const APP_ENV = (getOptionalEnv('EXPO_PUBLIC_ENV', DEFAULT_RUNTIME_ENV) as AppRuntimeEnv) ?? DEFAULT_RUNTIME_ENV; diff --git a/client/src/services/pushApi.ts b/client/src/services/pushApi.ts index e2be153..38b06b7 100644 --- a/client/src/services/pushApi.ts +++ b/client/src/services/pushApi.ts @@ -5,7 +5,13 @@ import { Platform } from 'react-native'; import { httpJson } from '../utils/http'; import { APP_ENV } from '../constants/env'; -import { getDailyReminderSettings, getOrCreateClientUserId, getUserProfileScoring } from '../storage/appStorage'; +import { + getDailyReminderSettings, + getLastRegisteredPushToken, + getOrCreateClientUserId, + getUserProfileScoring, + setLastRegisteredPushToken, +} from '../storage/appStorage'; import type { UserProfileScoring } from '../storage/appStorage'; import { toBackendLocaleFromLanguageTag } from '../i18n/locale'; @@ -154,6 +160,22 @@ export async function registerPushToken(args: { pushToken: string }): Promise { + // 只要系统权限已授权,就应尽早把 token 写入后端(不依赖用户在“每日提醒”里点确认) + const settings = await Notifications.getPermissionsAsync(); + if (settings.status !== 'granted') return { ok: false, reason: 'permission_not_granted' }; + + const token = await getExpoPushTokenOrThrow(); + + // 简单去重:token 未变化则不重复上报(减少网络与日志噪音) + const last = await getLastRegisteredPushToken().catch(() => null); + if (last && String(last) === String(token)) return { ok: true, reason: 'already_registered' }; + + await registerPushToken({ pushToken: token }); + await setLastRegisteredPushToken(token); + return { ok: true, reason: 'registered' }; +} + export async function setPushPreferences(args: { enabled: boolean; timesPerDay: number }): Promise { const clientUserId = await getOrCreateClientUserId(); const tz = pickTimezone(); diff --git a/client/src/storage/appStorage.ts b/client/src/storage/appStorage.ts index db6bea1..84f7b2d 100644 --- a/client/src/storage/appStorage.ts +++ b/client/src/storage/appStorage.ts @@ -18,6 +18,8 @@ const KEY_RECO_FEED_HISTORY = 'reco.feedHistory'; const KEY_UI_THEME_MODE = 'ui.theme.mode'; const KEY_UI_THEME_SUIXIN_STATE = 'ui.theme.suixin.state'; const KEY_DAILY_REMINDER_SETTINGS = 'dailyReminder.settings'; +const KEY_PUSH_LAST_REGISTERED_TOKEN = 'push.lastRegisteredToken'; +const KEY_PUSH_LAST_REGISTERED_AT = 'push.lastRegisteredAt'; export type PushPromptState = 'enabled' | 'skipped' | 'unknown'; export type Reaction = 'like' | 'dislike'; @@ -69,6 +71,16 @@ export type DailyReminderSettings = { pushEnabled: boolean; }; +export async function getLastRegisteredPushToken(): Promise { + const raw = await AsyncStorage.getItem(KEY_PUSH_LAST_REGISTERED_TOKEN); + return raw ? String(raw) : null; +} + +export async function setLastRegisteredPushToken(token: string): Promise { + await AsyncStorage.setItem(KEY_PUSH_LAST_REGISTERED_TOKEN, String(token)); + await AsyncStorage.setItem(KEY_PUSH_LAST_REGISTERED_AT, new Date().toISOString()); +} + export type RecoFeedCacheItem = { content_id: number; text: string; @@ -188,7 +200,7 @@ export async function setReaction(contentId: string, reaction: Reaction): Promis } export type FavoriteItem = { - favId: string; // 唯一标识,支持重复点赞同一文案 + favId: string; // 唯一标识 id: string; /** * 收藏时的文案快照(强烈建议写入,避免后续 cache 覆盖导致无法还原文案) @@ -200,13 +212,28 @@ export type FavoriteItem = { }; export async function getFavorites(): Promise { - return await getJson(KEY_FAVORITES_ITEMS, []); + const raw = await getJson(KEY_FAVORITES_ITEMS, []); + // 去重:同一条文案只保留最新的一条,防止重复点击喜欢导致弹窗重复展示 + const seen = new Set(); + const deduped: FavoriteItem[] = []; + for (const item of raw) { + const key = String(item.id); + if (seen.has(key)) continue; + seen.add(key); + deduped.push(item); + } + // 若发现历史数据有重复,顺便写回清理后的版本 + if (deduped.length !== raw.length) { + await setJson(KEY_FAVORITES_ITEMS, deduped); + } + return deduped; } export async function addFavorite(item: FavoriteItem): Promise { const list = await getFavorites(); - // 允许重复点赞,不再根据 id 去重 - const newList = [item, ...list]; + // 幂等写入:同一条文案只保留一条(最新),避免重复点击喜欢产生重复项 + const filtered = list.filter(x => String(x.id) !== String(item.id)); + const newList = [item, ...filtered]; console.log('Adding to favorites:', JSON.stringify(item)); await setJson(KEY_FAVORITES_ITEMS, newList); } diff --git a/spec_kit/overview.md b/spec_kit/overview.md index 72dc344..34f8e1c 100644 --- a/spec_kit/overview.md +++ b/spec_kit/overview.md @@ -39,6 +39,7 @@ - **已完成编码(阶段性)**: - 客户端:新增 `client_user_id`(UUID v4)生成与持久化;每日提醒次数范围修正为 **0~5**(0 表示关闭) - 客户端:Onboarding 结束页(每日提醒)在用户选择次数 > 0 时**直接触发系统权限申请**;授权后获取 Expo Push Token 并调用后端 `register/preferences`(移除单独的 push 引导页) + - 客户端:Onboarding 问卷完成后“开通推送权限”流程增加 **loading 态**(完成按钮转圈 + 全页禁用交互,避免重复触发/重复上报) - 客户端:个人主页“每日提醒”弹窗移除测试模式强制无权限逻辑,改为真实读取系统权限;并在开关/点击 OK 时同步后端偏好 - 客户端:新增推送接口封装 `client/src/services/pushApi.ts`(token 获取、register/preferences/get、自动上报时区与 locale,并携带用户画像供后端 Push 模板使用) - 后端:新增 Push 数据模型 + Alembic 迁移(`push_tokens` / `push_preferences` / `push_send_log`) @@ -89,6 +90,8 @@ - 推送 entitlements 的 `aps-environment` 已切到 `production`(用于 TestFlight/线上包) - 清理未接入编译的 WidgetKit 骨架残留:移除磁盘上的 `client/ios/MindfulnessWidget/` 文件,并从 `client/ios/client.xcodeproj/project.pbxproj` 删除对应工程引用(避免 Xcode 显示幽灵文件) - 修复 Xcode Archive 偶发显示 “Generic Xcode Archive”:在共享 scheme `Hey Mama` 的 Archive Post-actions 自动补齐 `.xcarchive/Info.plist` 的 `ApplicationProperties`,并在缺失时补齐 `Name`/`SchemeName` + 自检提示(根治 Organizer 无法识别主 App、无法分发/上传 TestFlight 的问题) + - Widget 名称与描述支持多语言(TC/EN,默认 EN):Widget Extension 增加 `Localizable.strings`(`en.lproj` / `zh-Hant.lproj`),`EmotionWidget.swift` 使用本地化 key 作为 `.configurationDisplayName/.description` + - 个人主页弹窗:小工具入口**暂时隐藏**锁屏小工具说明;桌面小工具引导弹窗标题(繁中/TC)更新为“**如何加入小工具**”(并统一弹窗标题使用该文案);品牌文案“正念”改为 **Hey Mama**(含引导搜索词与 Widget 标题) ## Text Wrap @@ -169,6 +172,10 @@ - `spec_kit/Text Wrap/modules/integration/tasks.md` - **接入情况**: - Home(APP):已在 `client/app/(app)/home.tsx` 接入 `wrapText()` 渲染 `wrappedText`(含 `\n`) + - iOS Widget(WidgetKit):App 侧在写入 `widget.dailyReco.v1` 缓存时,额外生成 `wrapped_text_by_family`(small/medium/large)并写入 App Group;Widget 侧按 `WidgetFamily` 优先读取该字段渲染(保证换行一致且无需在 Extension 内跑 JS) + - **近期变更**: + - Widget 接入:`client/src/modules/dailyWidgetReco/index.ts` 生成 `wrapped_text_by_family`;`client/ios/情绪小组件/EmotionWidget.swift` 按 family 读取;`client/app/(app)/home.tsx` 前台触发一次“尽力而为”的补齐/刷新 + - Home 排版风格微调:支持 `scoringOverrides`,在 Home 里对 TC 做“更偏好标点停顿/更好看”的权重与理想宽度微调(不影响默认 v1) ## Splash Consent -- 2.49.1 From e552e22de90ddf7402d3d1373c1686b947169d75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E6=B1=80=E5=B2=9A?= Date: Tue, 10 Feb 2026 16:16:02 +0800 Subject: [PATCH 05/19] =?UTF-8?q?chore:=20App=20=E5=90=8D=E7=A8=B1=20Hey?= =?UTF-8?q?=20Mama=20=E2=86=92=20Dear=20Mama=20+=20=E7=9B=B8=E9=97=9C?= =?UTF-8?q?=E4=BF=AE=E5=BE=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 品牌與顯示:app.json、Info.plist、package scheme、iOS 產物 DearMama.app - 協議與條款:隱私協議/使用條款全文、設計文檔、server legal_docs + legal API、push 預設 title - 多語言:all.json / zh-TW / zh-CN / en / es / pt 的 consent、widget 標題與引導文案 - 小工具:EmotionWidget.swift 品牌文案、Dear Mama.xcscheme - CocoaPods:project.pbxproj objectVersion 70→56 以通過 pod install - Metro:react-native-text-size 用 require + extraNodeModules 解析 - textWrap:measureWidthImpl 改為 require 載入 react-native-text-size Co-authored-by: Cursor --- client/app.json | 2 +- client/ios/Podfile.lock | 166 +++++++++--------- client/ios/client.xcodeproj/project.pbxproj | 35 ++-- .../{Hey Mama.xcscheme => Dear Mama.xcscheme} | 10 +- client/ios/client/Info.plist | 2 +- client/ios/scripts/fix-xcarchive-header.sh | 2 +- client/ios/情绪小组件/EmotionWidget.swift | 4 +- client/metro.config.js | 5 + client/package-lock.json | 1 + client/package.json | 4 +- .../textWrap/measure/measureWidthImpl.ts | 11 +- client/src/i18n/locales/all.json | 14 +- client/src/i18n/locales/en.json | 4 +- client/src/i18n/locales/es.json | 4 +- client/src/i18n/locales/pt.json | 4 +- client/src/i18n/locales/zh-CN.json | 4 +- client/src/i18n/locales/zh-TW.json | 6 +- server/app/api/v1/legal.py | 4 +- server/app/api/v1/push.py | 2 +- server/app/legal_docs.py | 42 ++--- spec_kit/overview.md | 4 +- 设计说明文档/用户使用协议.md | 16 +- 设计说明文档/隐私协议.md | 26 +-- 23 files changed, 195 insertions(+), 177 deletions(-) rename client/ios/client.xcodeproj/xcshareddata/xcschemes/{Hey Mama.xcscheme => Dear Mama.xcscheme} (94%) diff --git a/client/app.json b/client/app.json index f386662..c39bae6 100644 --- a/client/app.json +++ b/client/app.json @@ -1,6 +1,6 @@ { "expo": { - "name": "Hey Mama", + "name": "Dear Mama", "slug": "client", "version": "1.0.0", "orientation": "portrait", diff --git a/client/ios/Podfile.lock b/client/ios/Podfile.lock index cc8c4c5..92b7591 100644 --- a/client/ios/Podfile.lock +++ b/client/ios/Podfile.lock @@ -2540,30 +2540,30 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - EXApplication: 13420f8139864183f8a04fd6099077bdf8cfb186 - EXConstants: 3feb66fd1d94202fc1f0946d74e029d8b224b60e + EXApplication: 1e98d4b1dccdf30627f92917f4b2c5a53c330e5f + EXConstants: fce59a631a06c4151602843667f7cfe35f81e271 EXJSONUtils: 1d3e4590438c3ee593684186007028a14b3686cd - EXManifests: 83ef0844fcf06d6099b12a7bdbd7d36fc0e1dd16 - EXNotifications: 2a3feb7af6194828d9aafda72f63a9a03866230a - Expo: b8d64eb9a496ebe8c71e3dae7eeb7f394b146b80 - expo-dev-client: 12ef7d5b14d93e309922acea78dcd851db583a87 - expo-dev-launcher: 47994056008ffdc30a6a5e328a375b3e30a8db05 - expo-dev-menu: ea4fb803ace52e60d7cd8060c7cd379612a140b2 + EXManifests: a8d97683e5c7a3b026ffbd58559c64dc655b747b + EXNotifications: 9eec98712cc814ceff916d876cb53859003b0597 + Expo: 4e503a041c59c4e34c8be262a135848ad5cd3710 + expo-dev-client: 425ee077d6754a98cfe3a2e2410d29b440b24c9d + expo-dev-launcher: a4f4cdef064ab1fb8621e5b8c7c457cd6e9568c3 + expo-dev-menu: 05b18812110c175814c6af0d09dd658abcc5e00d expo-dev-menu-interface: 600df12ea01efecdd822daaf13cc0ac091775533 - ExpoAsset: d999f3bbd998a750f3b74cb913229848901b926b - ExpoCrypto: 4d23a9ff67c25e2ed23ca792d81e58817a7ea1b9 - ExpoDevice: 0773c782b055558ca9b40b74aa4a8133a66cd0d2 - ExpoFileSystem: aefcd337b94b874f88752ebefc52813b84992fad - ExpoFont: c625dbd97ed57e9089b172b2a7bb99003d074664 - ExpoHead: b691a2ed7ab02ed820b6c6468941832d34969c29 - ExpoKeepAwake: 44bf6715bc1d2ddb17afe19d927cd039cda123f0 - ExpoLinearGradient: 814a21fc4056c3cf606e4f19e31e47074c5b5a86 - ExpoLinking: ebf543fd411d56375cb4eee07f6ab4e31c7ad959 - ExpoLocalization: 6ac6f326210f0a3141ef6f58ab8f8f4ed003b485 - ExpoModulesCore: 77496909fd3c800f97f7f2007dd26aeac4bb3798 - ExpoSplashScreen: 72fbc6dd9d6404dd9d0725a56c9ac1383bc0b14f - ExpoWebBrowser: 88b116cd378d9609c776c0903fe4070fca461588 - EXUpdatesInterface: 1436757deb0d574b84bba063bd024c315e0ec08b + ExpoAsset: f867e55ceb428aab99e1e8c082b5aee7c159ea18 + ExpoCrypto: b6105ebaa15d6b38a811e71e43b52cd934945322 + ExpoDevice: 6327c3c200816795708885adf540d26ecab83d1a + ExpoFileSystem: 858a44267a3e6e9057e0888ad7c7cfbf55d52063 + ExpoFont: f543ce20a228dd702813668b1a07b46f51878d47 + ExpoHead: 4425246bc93411f0fe7f6945f95f698e91db8780 + ExpoKeepAwake: 55f75eca6499bb9e4231ebad6f3e9cb8f99c0296 + ExpoLinearGradient: 809102bdb979f590083af49f7fa4805cd931bd58 + ExpoLinking: 8f0aaf69aa56f832913030503b6263dc6f647f37 + ExpoLocalization: d9168d5300a5b03e5e78b986124d11fb6ec3ebbd + ExpoModulesCore: f3da4f1ab5a8375d0beafab763739dbee8446583 + ExpoSplashScreen: bc3cffefca2716e5f22350ca109badd7e50ec14d + ExpoWebBrowser: 17b064c621789e41d4816c95c93f429b84971f52 + EXUpdatesInterface: 5adf50cb41e079c861da6d9b4b954c3db9a50734 FBLazyVector: e95a291ad2dadb88e42b06e0c5fb8262de53ec12 hermes-engine: 9f4dfe93326146a1c99eb535b1cb0b857a3cd172 RCTDeprecation: 943572d4be82d480a48f4884f670135ae30bf990 @@ -2571,72 +2571,72 @@ SPEC CHECKSUMS: RCTTypeSafety: 16a4144ca3f959583ab019b57d5633df10b5e97c React: 914f8695f9bf38e6418228c2ffb70021e559f92f React-callinvoker: 1c0808402aee0c6d4a0d8e7220ce6547af9fba71 - React-Core: 4ae98f9e8135b8ddbd7c98730afb6fdae883db90 - React-Core-prebuilt: 8f4cca589c14e8cf8fc6db4587ef1c2056b5c151 - React-CoreModules: e878a90bb19b8f3851818af997dbae3b3b0a27ac - React-cxxreact: 28af9844f6dc87be1385ab521fbfb3746f19563c + React-Core: c61410ef0ca6055e204a963992e363227e0fd1c5 + React-Core-prebuilt: 02f0ad625ddd47463c009c2d0c5dd35c0d982599 + React-CoreModules: 1f6d1744b5f9f2ec684a4bb5ced25370f87e5382 + React-cxxreact: 3af79478e8187b63ffc22b794cd42d3fc1f1f2da React-debug: 6328c2228e268846161f10082e80dc69eac2e90a - React-defaultsnativemodule: afc9d809ec75780f39464a6949c07987fbea488c - React-domnativemodule: 91a233260411d41f27f67aa1358b7f9f0bfd101d - React-Fabric: 21f349b5e93f305a3c38c885902683a9c79cf983 - React-FabricComponents: 47ac634cc9ecc64b30a9997192f510eebe4177e4 - React-FabricImage: 21873acd6d4a51a0b97c133141051c7acb11cc86 - React-featureflags: 653f469f0c3c9dc271d610373e3b6e66a9fd847d - React-featureflagsnativemodule: c91a8a3880e0f4838286402241ead47db43aed28 - React-graphics: b4bdb0f635b8048c652a5d2b73eb8b1ddd950f24 - React-hermes: fcfad3b917400f49026f3232561e039c9d1c34bf - React-idlecallbacksnativemodule: 8cb83207e39f8179ac1d344b6177c6ab3ccebcdc - React-ImageManager: 396128004783fc510e629124dce682d38d1088e7 - React-jserrorhandler: b58b788d788cdbf8bda7db74a88ebfcffc8a0795 - React-jsi: d2c3f8555175371c02da6dfe7ed1b64b55a9d6c0 - React-jsiexecutor: ba537434eb45ee018b590ed7d29ee233fddb8669 - React-jsinspector: f21b6654baf96cb9f71748844a32468a5f73ad51 - React-jsinspectorcdp: 3f8be4830694c3c1c39442e50f8db877966d43f0 - React-jsinspectornetwork: 70e41469565712ad60e11d9c8b8f999b9f7f61eb - React-jsinspectortracing: eccf9bfa4ec7f130d514f215cfb2222dc3c0e270 - React-jsitooling: b376a695f5a507627f7934748533b24eed1751ca - React-jsitracing: 5c8c3273dda2d95191cc0612fb5e71c4d9018d2a - React-logger: c3e2f8a2e284341205f61eef3d4677ab5a309dfd - React-Mapbuffer: 603c18db65844bb81dbe62fee8fcc976eaeb7108 - React-microtasksnativemodule: d77e0c426fce34c23227394c96ca1033b30c813c - react-native-safe-area-context: 53f796cb6c814661bbe99fbdfd0585d07b996cdd - React-NativeModulesApple: 1664340b8750d64e0ef3907c5e53d9481f74bcbd + React-defaultsnativemodule: d635ef36d755321e5d6fc065bd166b2c5a0e9833 + React-domnativemodule: dd28f6d96cd21236e020be2eff6fe0b7d4ec3b66 + React-Fabric: 2e32c3fdbb1fbcf5fde54607e3abe453c6652ce2 + React-FabricComponents: 5ed0cdb81f6b91656cb4d3be432feaa28a58071a + React-FabricImage: 2bc714f818cb24e454f5d3961864373271b2faf8 + React-featureflags: 847642f41fa71ad4eec5e0351badebcad4fe6171 + React-featureflagsnativemodule: c868a544b2c626fa337bcbd364b1befe749f0d3f + React-graphics: 192ec701def5b3f2a07db2814dfba5a44986cff6 + React-hermes: e875778b496c86d07ab2ccaa36a9505d248a254b + React-idlecallbacksnativemodule: 4d57965cdf82c14ee3b337189836cd8491632b76 + React-ImageManager: bd0b99e370b13de82c9cd15f0f08144ff3de079e + React-jserrorhandler: a2fdef4cbcfdcdf3fa9f5d1f7190f7fd4535248d + React-jsi: 89d43d1e7d4d0663f8ba67e0b39eb4e4672c27de + React-jsiexecutor: abe4874aaab90dfee5dec480680220b2f8af07e3 + React-jsinspector: a0b3e051aef842b0b2be2353790ae2b2a5a65a8f + React-jsinspectorcdp: 6346013b2247c6263fbf5199adf4a8751e53bd89 + React-jsinspectornetwork: 26281aa50d49fc1ec93abf981d934698fa95714f + React-jsinspectortracing: 55eedf6d57540507570259a778663b90060bbd6e + React-jsitooling: 0e001113fa56d8498aa8ac28437ac0d36348e51a + React-jsitracing: b713793eb8a5bbc4d86a84e9d9e5023c0f58cbaf + React-logger: 50fdb9a8236da90c0b1072da5c32ee03aeb5bf28 + React-Mapbuffer: 9050ee10c19f4f7fca8963d0211b2854d624973e + React-microtasksnativemodule: f775db9e991c6f3b8ccbc02bfcde22770f96e23b + react-native-safe-area-context: 37e680fc4cace3c0030ee46e8987d24f5d3bdab2 + React-NativeModulesApple: 8969913947d5b576de4ed371a939455a8daf28aa React-oscompat: ce47230ed20185e91de62d8c6d139ae61763d09c - React-perflogger: b1af3cfb3f095f819b2814910000392a8e17ba9f - React-performancetimeline: f9ec65b77bcadbc7bd8b47a6f4b4b697da7b1490 + React-perflogger: 02b010e665772c7dcb859d85d44c1bfc5ac7c0e4 + React-performancetimeline: 130db956b5a83aa4fb41ddf5ae68da89f3fb1526 React-RCTActionSheet: 0b14875b3963e9124a5a29a45bd1b22df8803916 - React-RCTAnimation: 60f6eca214a62b9673f64db6df3830cee902b5af - React-RCTAppDelegate: 37734b39bac108af30a0fd9d3e1149ec68b82c28 - React-RCTBlob: 83fbcbd57755caf021787324aac2fe9b028cc264 - React-RCTFabric: a05cb1df484008db3753c8b4a71e4c6d9f1e43a6 - React-RCTFBReactNativeSpec: d58d7ae9447020bbbac651e3b0674422aba18266 - React-RCTImage: 47aba3be7c6c64f956b7918ab933769602406aac - React-RCTLinking: 2dbaa4df2e4523f68baa07936bd8efdfa34d5f31 - React-RCTNetwork: 1fca7455f9dedf7de2b95bec438da06680f3b000 - React-RCTRuntime: 17819dd1dfc8613efaf4cbb9d8686baae4a83e5b - React-RCTSettings: 01bf91c856862354d3d2f642ccb82f3697a4284a - React-RCTText: cb576a3797dcb64933613c522296a07eaafc0461 - React-RCTVibration: 560af8c086741f3525b8456a482cdbe27f9d098e + React-RCTAnimation: a7b90fd2af7bb9c084428867445a1481a8cb112e + React-RCTAppDelegate: 3262bedd01263f140ec62b7989f4355f57cec016 + React-RCTBlob: c17531368702f1ebed5d0ada75a7cf5915072a53 + React-RCTFabric: 6409edd8cfdc3133b6cc75636d3b858fdb1d11ea + React-RCTFBReactNativeSpec: c004b27b4fa3bd85878ad2cf53de3bbec85da797 + React-RCTImage: c68078a120d0123f4f07a5ac77bea3bb10242f32 + React-RCTLinking: cf8f9391fe7fe471f96da3a5f0435235eca18c5b + React-RCTNetwork: ca31f7c879355760c2d9832a06ee35f517938a20 + React-RCTRuntime: a6cf4a1e42754fc87f493e538f2ac6b820e45418 + React-RCTSettings: e0e140b2ff4bf86d34e9637f6316848fc00be035 + React-RCTText: 75915bace6f7877c03a840cc7b6c622fb62bfa6b + React-RCTVibration: 25f26b85e5e432bb3c256f8b384f9269e9529f25 React-rendererconsistency: 2dac03f448ff337235fd5820b10f81633328870d - React-renderercss: c5c6b7a15948dd28facca39a18ac269073718490 - React-rendererdebug: 3c9d5e1634273f5a24d84cc5669f290ce0bdc812 - React-RuntimeApple: 887637d1e12ea8262df7d32bc100467df2302613 - React-RuntimeCore: 91f779835dc4f8f84777fe5dd24f1a22f96454e4 - React-runtimeexecutor: 8bb6b738f37b0ada4a6269e6f8ab1133dea0285c - React-RuntimeHermes: 4cb93de9fa8b1cc753d200dbe61a01b9ec5f5562 - React-runtimescheduler: 83dc28f530bfbd2fce84ed13aa7feebdc24e5af7 - React-timing: 03c7217455d2bff459b27a3811be25796b600f47 - React-utils: 6d46795ae0444ec8a5d9a5f201157b286bf5250a - ReactAppDependencyProvider: c277c5b231881ad4f00cd59e3aa0671b99d7ebee - ReactCodegen: 4c44b74b77fc41ae25b9e2c7e9bd6e2bc772c23f - ReactCommon: e6e232202a447d353e5531f2be82f50f47cbaa9a + React-renderercss: 477da167bb96b5ac86d30c5d295412fb853f5453 + React-rendererdebug: 2a1798c6f3ef5f22d466df24c33653edbabb5b89 + React-RuntimeApple: 28cf4d8eb18432f6a21abbed7d801ab7f6b6f0b4 + React-RuntimeCore: 41bf0fd56a00de5660f222415af49879fa49c4f0 + React-runtimeexecutor: 1afb774dde3011348e8334be69d2f57a359ea43e + React-RuntimeHermes: f3b158ea40e8212b1a723a68b4315e7a495c5fc6 + React-runtimescheduler: 3e1e2bec7300bae512533107d8e54c6e5c63fe0f + React-timing: 6fa9883de2e41791e5dc4ec404e5e37f3f50e801 + React-utils: 6e2035b53d087927768649a11a26c4e092448e34 + ReactAppDependencyProvider: 1bcd3527ac0390a1c898c114f81ff954be35ed79 + ReactCodegen: 7d4593f7591f002d137fe40cef3f6c11f13c88cc + ReactCommon: 08810150b1206cc44aecf5f6ae19af32f29151a8 ReactNativeDependencies: 71ce9c28beb282aa720ea7b46980fff9669f428a - RNCAsyncStorage: e85a99325df9eb0191a6ee2b2a842644c7eb29f4 - RNGestureHandler: 40c2d1c168e54715fe52e0fb16cb38c54611e4f3 - RNReanimated: 43f611f1c85c90e0273df7399bf1536f8e2bd125 - RNScreens: dd61bc3a3e6f6901ad833efa411917d44827cf51 - RNSVG: 2825ee146e0f6a16221e852299943e4cceef4528 - RNWorklets: 28ee7370ca8da356fcc914e3e68b97e9752196d2 + RNCAsyncStorage: 3a4f5e2777dae1688b781a487923a08569e27fe4 + RNGestureHandler: e0d0bce5599f6120b7adf90c38d2805e2935795f + RNReanimated: e5c702a3e24cc1c68b2de67671713f35461678f4 + RNScreens: d8d6f1792f6e7ac12b0190d33d8d390efc0c1845 + RNSVG: 31d6639663c249b7d5abc9728dde2041eb2a3c34 + RNWorklets: 76fce72926e28e304afb44f0da23b2d24f2c1fa0 Yoga: 5934998fbeaef7845dbf698f698518695ab4cd1a PODFILE CHECKSUM: c2c3838f0b2a579fef2350bff2ecaa005e27145d diff --git a/client/ios/client.xcodeproj/project.pbxproj b/client/ios/client.xcodeproj/project.pbxproj index 561a3bb..11260de 100644 --- a/client/ios/client.xcodeproj/project.pbxproj +++ b/client/ios/client.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 70; + objectVersion = 56; objects = { /* Begin PBXBuildFile section */ @@ -11,7 +11,7 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 1A1DE01D4133812B2E2BA692 /* libPods-client.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E3328F0E595C1F4A244DF238 /* libPods-client.a */; }; 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; - A1B2C3D4E5F60718293A4B5C /* 情绪小组件/EmotionWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D4E5F60718293A4B5B /* 情绪小组件/EmotionWidget.swift */; }; + A1B2C3D4E5F60718293A4B5C /* EmotionWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D4E5F60718293A4B5B /* EmotionWidget.swift */; }; A8C1D2E3F4A5B6C7D8E9F0A2 /* AppGroupStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8C1D2E3F4A5B6C7D8E9F0A1 /* AppGroupStorage.swift */; }; A8C1D2E3F4A5B6C7D8E9F0A3 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB3DAF802F2A4B8D00450593 /* WidgetKit.framework */; }; A8C1D2E3F4A5B6C7D8E9F0B2 /* AppGroupStorageBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C1D2E3F4A5B6C7D8E9F0B1 /* AppGroupStorageBridge.m */; }; @@ -49,12 +49,12 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 13B07F961A680F5B00A75B9A /* HeyMama.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HeyMama.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07F961A680F5B00A75B9A /* DearMama.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DearMama.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = client/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = client/Info.plist; sourceTree = ""; }; 3C76CA16D0801CBF0D731C7C /* Pods-client.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-client.release.xcconfig"; path = "Target Support Files/Pods-client/Pods-client.release.xcconfig"; sourceTree = ""; }; 75F52ADE07CAE9D9736D7671 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = client/PrivacyInfo.xcprivacy; sourceTree = ""; }; - A1B2C3D4E5F60718293A4B5B /* 情绪小组件/EmotionWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "情绪小组件/EmotionWidget.swift"; sourceTree = ""; }; + A1B2C3D4E5F60718293A4B5B /* EmotionWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "情绪小组件/EmotionWidget.swift"; sourceTree = ""; }; A8C1D2E3F4A5B6C7D8E9F0A1 /* AppGroupStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppGroupStorage.swift; path = client/AppGroupStorage.swift; sourceTree = ""; }; A8C1D2E3F4A5B6C7D8E9F0B1 /* AppGroupStorageBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AppGroupStorageBridge.m; path = client/AppGroupStorageBridge.m; sourceTree = ""; }; AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = client/SplashScreen.storyboard; sourceTree = ""; }; @@ -74,7 +74,7 @@ /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ - EB3DAF952F2A4B8F00450593 /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { + EB3DAF952F2A4B8F00450593 /* Exceptions for "情绪小组件" folder in "情绪小组件Extension" target */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( EmotionWidget.swift, @@ -85,7 +85,18 @@ /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ - EB3DAF842F2A4B8E00450593 /* 情绪小组件 */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (EB3DAF952F2A4B8F00450593 /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = "情绪小组件"; sourceTree = ""; }; + EB3DAF842F2A4B8E00450593 /* 情绪小组件 */ = { + isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + EB3DAF952F2A4B8F00450593 /* Exceptions for "情绪小组件" folder in "情绪小组件Extension" target */, + ); + explicitFileTypes = { + }; + explicitFolders = ( + ); + path = "情绪小组件"; + sourceTree = ""; + }; /* End PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFrameworksBuildPhase section */ @@ -175,7 +186,7 @@ 83CBBA001A601CBA00E9B192 /* Products */ = { isa = PBXGroup; children = ( - 13B07F961A680F5B00A75B9A /* HeyMama.app */, + 13B07F961A680F5B00A75B9A /* DearMama.app */, EB3DAF7F2F2A4B8D00450593 /* 情绪小组件Extension.appex */, ); name = Products; @@ -202,7 +213,7 @@ EB3DAFD42F2A5FC100450593 /* Recovered References */ = { isa = PBXGroup; children = ( - A1B2C3D4E5F60718293A4B5B /* 情绪小组件/EmotionWidget.swift */, + A1B2C3D4E5F60718293A4B5B /* EmotionWidget.swift */, ); name = "Recovered References"; sourceTree = ""; @@ -239,7 +250,7 @@ ); name = client; productName = client; - productReference = 13B07F961A680F5B00A75B9A /* HeyMama.app */; + productReference = 13B07F961A680F5B00A75B9A /* DearMama.app */; productType = "com.apple.product-type.application"; }; EB3DAF7E2F2A4B8D00450593 /* 情绪小组件Extension */ = { @@ -471,7 +482,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A1B2C3D4E5F60718293A4B5C /* 情绪小组件/EmotionWidget.swift in Sources */, + A1B2C3D4E5F60718293A4B5C /* EmotionWidget.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -516,7 +527,7 @@ ); OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = com.damer.mindfulness; - PRODUCT_NAME = HeyMama; + PRODUCT_NAME = DearMama; SKIP_INSTALL = NO; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -557,7 +568,7 @@ ); OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.damer.mindfulness; - PRODUCT_NAME = HeyMama; + PRODUCT_NAME = DearMama; SKIP_INSTALL = NO; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; diff --git a/client/ios/client.xcodeproj/xcshareddata/xcschemes/Hey Mama.xcscheme b/client/ios/client.xcodeproj/xcshareddata/xcschemes/Dear Mama.xcscheme similarity index 94% rename from client/ios/client.xcodeproj/xcshareddata/xcschemes/Hey Mama.xcscheme rename to client/ios/client.xcodeproj/xcshareddata/xcschemes/Dear Mama.xcscheme index 758ac77..f45b064 100644 --- a/client/ios/client.xcodeproj/xcshareddata/xcschemes/Hey Mama.xcscheme +++ b/client/ios/client.xcodeproj/xcshareddata/xcschemes/Dear Mama.xcscheme @@ -15,7 +15,7 @@ @@ -44,7 +44,7 @@ @@ -61,7 +61,7 @@ @@ -72,7 +72,7 @@ diff --git a/client/ios/client/Info.plist b/client/ios/client/Info.plist index 3716cc4..da47e68 100644 --- a/client/ios/client/Info.plist +++ b/client/ios/client/Info.plist @@ -7,7 +7,7 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - Hey Mama + Dear Mama CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier diff --git a/client/ios/scripts/fix-xcarchive-header.sh b/client/ios/scripts/fix-xcarchive-header.sh index bcf53dd..65e096f 100755 --- a/client/ios/scripts/fix-xcarchive-header.sh +++ b/client/ios/scripts/fix-xcarchive-header.sh @@ -42,7 +42,7 @@ if [[ -z "$APP_PLIST" ]]; then fi APP_DIR="$(/usr/bin/dirname "$APP_PLIST")" -APP_NAME="$(/usr/bin/basename "$APP_DIR")" # 例如 HeyMama.app +APP_NAME="$(/usr/bin/basename "$APP_DIR")" # 例如 DearMama.app APP_REL_PATH="Applications/$APP_NAME" bundle_id="$(/usr/bin/plutil -extract CFBundleIdentifier raw -o - "$APP_PLIST" 2>/dev/null || true)" diff --git a/client/ios/情绪小组件/EmotionWidget.swift b/client/ios/情绪小组件/EmotionWidget.swift index 2d7cae7..a03fde9 100644 --- a/client/ios/情绪小组件/EmotionWidget.swift +++ b/client/ios/情绪小组件/EmotionWidget.swift @@ -41,8 +41,8 @@ private func resolveLang() -> String { } private func resolveTitle(lang: String) -> String { - // 需求:品牌文案「正念」统一改为 Hey Mama - return "Hey Mama" + // 需求:品牌文案统一为 Dear Mama + return "Dear Mama" } private func resolveFooterHint(lang: String) -> String { diff --git a/client/metro.config.js b/client/metro.config.js index 0e691ea..11e1e89 100644 --- a/client/metro.config.js +++ b/client/metro.config.js @@ -1,5 +1,6 @@ // Metro 配置:支持 import 本地 .svg 为 React 组件 // 说明:Expo SDK 54 + react-native-svg-transformer 的常见配置方式 +const path = require('path'); const { getDefaultConfig } = require('expo/metro-config'); /** @type {import('expo/metro-config').MetroConfig} */ @@ -14,6 +15,10 @@ config.resolver = { ...config.resolver, assetExts: config.resolver.assetExts.filter((ext) => ext !== 'svg'), sourceExts: [...config.resolver.sourceExts, 'svg'], + // 确保 react-native-text-size 从项目 node_modules 解析(避免 Metro 解析不到) + extraNodeModules: { + 'react-native-text-size': path.resolve(__dirname, 'node_modules/react-native-text-size'), + }, }; module.exports = config; diff --git a/client/package-lock.json b/client/package-lock.json index f305eff..a4b67ea 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -9719,6 +9719,7 @@ "version": "4.0.0-rc.1", "resolved": "https://registry.npmmirror.com/react-native-text-size/-/react-native-text-size-4.0.0-rc.1.tgz", "integrity": "sha512-CysqjU2jK6Yc+a+kEI222pUyTY2ywcU2HqbFqf1KHymW6OPTdvBBHqbEJKL0QiLhQaFYDbqicM+h990s9TP00g==", + "license": "BSD-2-Clause", "peerDependencies": { "react-native": ">=0.59.0" } diff --git a/client/package.json b/client/package.json index 76fd503..52b9376 100644 --- a/client/package.json +++ b/client/package.json @@ -6,8 +6,8 @@ "start": "expo start", "start:clean": "expo start -c", "android": "expo run:android", - "ios": "expo run:ios --scheme \"Hey Mama\"", - "ios:clean": "npm run clean:cache && npm run clean:ios-build && expo run:ios --scheme \"Hey Mama\"", + "ios": "expo run:ios --scheme \"Dear Mama\"", + "ios:clean": "npm run clean:cache && npm run clean:ios-build && expo run:ios --scheme \"Dear Mama\"", "web": "expo start --web", "test": "vitest run", "clean:cache": "rm -rf node_modules/.cache .expo 2>/dev/null; echo 'Cleared .expo and node_modules/.cache'", diff --git a/client/src/features/textWrap/measure/measureWidthImpl.ts b/client/src/features/textWrap/measure/measureWidthImpl.ts index 5d70270..b6779a9 100644 --- a/client/src/features/textWrap/measure/measureWidthImpl.ts +++ b/client/src/features/textWrap/measure/measureWidthImpl.ts @@ -20,11 +20,12 @@ type TextSizeMeasureParams = { type TextSizeMeasureResult = { width: number }; -async function loadReactNativeTextSize(): Promise<{ +function loadReactNativeTextSize(): { measure: (params: TextSizeMeasureParams) => Promise; -}> { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const mod: any = await import('react-native-text-size'); +} { + // 使用 require 确保 Metro 能解析并打包该原生模块(动态 import 在某些环境下无法被正确解析) + // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-explicit-any + const mod: any = require('react-native-text-size'); return mod?.default ?? mod; } @@ -42,7 +43,7 @@ function toTextSizeFontSpecs(fontSpec: FontSpec): Pick { - const TextSize = await loadReactNativeTextSize(); + const TextSize = loadReactNativeTextSize(); if (!TextSize || typeof TextSize.measure !== 'function') { // 典型原因:在 Expo Go 中运行,或没有使用包含该原生模块的 Development Build。 // 这里抛出更明确的错误,方便上层捕获并在 meta.reason=MEASURE_FAILED 时看到根因。 diff --git a/client/src/i18n/locales/all.json b/client/src/i18n/locales/all.json index 8751f4c..feeaec1 100644 --- a/client/src/i18n/locales/all.json +++ b/client/src/i18n/locales/all.json @@ -88,7 +88,7 @@ "errorDesc": "It’s okay if enabling fails. You can keep using the app." }, "home": { - "title": "Hey Mama", + "title": "Dear Mama", "like": "Like", "dislike": "Dislike", "favorites": "Favorites", @@ -127,7 +127,7 @@ "homeScreen": "Home Screen Widget", "howToTitle": "How to add the widget", "howToDesc1": "Long-press on the Home Screen until the apps jiggle, then tap “+” in the top-left corner.", - "howToDesc2": "Search “Hey Mama”, choose a widget size you like, then tap “Add Widget”.", + "howToDesc2": "Search “Dear Mama”, choose a widget size you like, then tap “Add Widget”.", "previewDate": "Thu, Jan 29", "previewQuote": "I’m proud of who I am, even while becoming who I want to be." }, @@ -141,10 +141,10 @@ "language": "Language", "version": "Version", "widgetTitle": "iOS Widget", - "widgetDesc": "Put gentle reminders on your home screen: long-press → tap “+” → search “Hey Mama” → add a size you like." + "widgetDesc": "Put gentle reminders on your home screen: long-press → tap “+” → search “Dear Mama” → add a size you like." }, "consent": { - "title": "Hey mama.", + "title": "Dear mama.", "subtitle": "You’re doing okay\nright now.", "subtitleSecondary": "", "agree": "Agree & Continue", @@ -260,7 +260,7 @@ "errorDesc": "開啟失敗也沒關係,你仍然可以繼續使用應用。" }, "home": { - "title": "Hey Mama", + "title": "Dear Mama", "like": "喜歡", "dislike": "不喜歡", "favorites": "收藏", @@ -299,7 +299,7 @@ "homeScreen": "桌面小工具", "howToTitle": "如何加入小工具", "howToDesc1": "長按主畫面空白處進入編輯,點左上角「+」新增小工具。", - "howToDesc2": "搜尋「Hey Mama」,選擇喜歡的尺寸,點「加入小工具」。", + "howToDesc2": "搜尋「Dear Mama」,選擇喜歡的尺寸,點「加入小工具」。", "previewDate": "1月29日週四 · 已至臘月十一", "previewQuote": "我也對現在的自己感到滿意,即使我仍在努力成為想成為的人。" }, @@ -313,7 +313,7 @@ "language": "語言", "version": "版本", "widgetTitle": "iOS 小工具", - "widgetDesc": "把溫柔提醒放到桌面上:長按主畫面 → 點「+」 → 搜尋「Hey Mama」 → 添加你喜歡的尺寸。" + "widgetDesc": "把溫柔提醒放到桌面上:長按主畫面 → 點「+」 → 搜尋「Dear Mama」 → 添加你喜歡的尺寸。" }, "consent": { "title": "我們知道,", diff --git a/client/src/i18n/locales/en.json b/client/src/i18n/locales/en.json index 8d23fd6..c25f1cd 100644 --- a/client/src/i18n/locales/en.json +++ b/client/src/i18n/locales/en.json @@ -32,7 +32,7 @@ "errorDesc": "It’s okay if enabling fails. You can keep using the app." }, "home": { - "title": "Hey Mama", + "title": "Dear Mama", "like": "Like", "dislike": "Dislike", "favorites": "Favorites", @@ -80,7 +80,7 @@ "language": "Language", "version": "Version", "widgetTitle": "iOS Widget", - "widgetDesc": "Put gentle reminders on your home screen: long-press → tap “+” → search “Hey Mama” → add a size you like." + "widgetDesc": "Put gentle reminders on your home screen: long-press → tap “+” → search “Dear Mama” → add a size you like." }, "consent": { "title": "You Are Perfect.", diff --git a/client/src/i18n/locales/es.json b/client/src/i18n/locales/es.json index 79d7817..f5c0939 100644 --- a/client/src/i18n/locales/es.json +++ b/client/src/i18n/locales/es.json @@ -30,7 +30,7 @@ "errorDesc": "No pasa nada si falla. Puedes seguir usando la app." }, "home": { - "title": "Hey Mama", + "title": "Dear Mama", "like": "Me gusta", "dislike": "No me gusta", "favorites": "Favoritos", @@ -78,7 +78,7 @@ "language": "Idioma", "version": "Versión", "widgetTitle": "Widget de iOS", - "widgetDesc": "Pon recordatorios en tu pantalla: mantén pulsado → “+” → busca “Hey Mama” → añade el tamaño." + "widgetDesc": "Pon recordatorios en tu pantalla: mantén pulsado → “+” → busca “Dear Mama” → añade el tamaño." }, "consent": { "agree": "Aceptar y Continuar", diff --git a/client/src/i18n/locales/pt.json b/client/src/i18n/locales/pt.json index e594545..0085fbf 100644 --- a/client/src/i18n/locales/pt.json +++ b/client/src/i18n/locales/pt.json @@ -30,7 +30,7 @@ "errorDesc": "Tudo bem se falhar. Você pode continuar usando o app." }, "home": { - "title": "Hey Mama", + "title": "Dear Mama", "like": "Curtir", "dislike": "Não curtir", "favorites": "Favoritos", @@ -78,7 +78,7 @@ "language": "Idioma", "version": "Versão", "widgetTitle": "Widget do iOS", - "widgetDesc": "Coloque lembretes na tela inicial: pressione e segure → “+” → procure “Hey Mama” → adicione o tamanho." + "widgetDesc": "Coloque lembretes na tela inicial: pressione e segure → “+” → procure “Dear Mama” → adicione o tamanho." }, "consent": { "agree": "Concordar e Continuar", diff --git a/client/src/i18n/locales/zh-CN.json b/client/src/i18n/locales/zh-CN.json index bf90671..4ee4334 100644 --- a/client/src/i18n/locales/zh-CN.json +++ b/client/src/i18n/locales/zh-CN.json @@ -33,7 +33,7 @@ "errorDesc": "开启失败,请稍后重试(模拟器可能无法获取推送 Token,建议用真机测试)。" }, "home": { - "title": "Hey Mama", + "title": "Dear Mama", "like": "点赞", "dislike": "讨厌", "favorites": "收藏", @@ -81,7 +81,7 @@ "language": "语言", "version": "版本", "widgetTitle": "iOS 小组件", - "widgetDesc": "把温柔提醒放到桌面上:长按主屏幕 → 点“+” → 搜索“Hey Mama” → 添加你喜欢的尺寸。" + "widgetDesc": "把温柔提醒放到桌面上:长按主屏幕 → 点“+” → 搜索“Dear Mama” → 添加你喜欢的尺寸。" }, "consent": { "title": "你本就完美。", diff --git a/client/src/i18n/locales/zh-TW.json b/client/src/i18n/locales/zh-TW.json index a7c3833..4a77bfe 100644 --- a/client/src/i18n/locales/zh-TW.json +++ b/client/src/i18n/locales/zh-TW.json @@ -92,7 +92,7 @@ "errorDesc": "開啟失敗也沒關係,你仍然可以繼續使用應用。" }, "home": { - "title": "Hey Mama", + "title": "Dear Mama", "like": "喜歡", "dislike": "不喜歡", "favorites": "收藏", @@ -131,7 +131,7 @@ "homeScreen": "桌面小工具", "howToTitle": "如何加入小工具", "howToDesc1": "長按主畫面空白處進入編輯,點左上角「+」新增小工具。", - "howToDesc2": "搜尋「Hey Mama」,選擇喜歡的尺寸,點「加入小工具」。", + "howToDesc2": "搜尋「Dear Mama」,選擇喜歡的尺寸,點「加入小工具」。", "previewDate": "1月29日週四 · 已至臘月十一", "previewQuote": "我也對現在的自己感到滿意,即使我仍在努力成為想成為的人。" }, @@ -145,7 +145,7 @@ "language": "語言", "version": "版本", "widgetTitle": "iOS 小工具", - "widgetDesc": "把溫柔提醒放到桌面上:長按主畫面 → 點「+」 → 搜尋「Hey Mama」 → 添加你喜歡的尺寸。" + "widgetDesc": "把溫柔提醒放到桌面上:長按主畫面 → 點「+」 → 搜尋「Dear Mama」 → 添加你喜歡的尺寸。" }, "consent": { "title": "我們知道,", diff --git a/server/app/api/v1/legal.py b/server/app/api/v1/legal.py index 74bb1cb..08ef3ed 100644 --- a/server/app/api/v1/legal.py +++ b/server/app/api/v1/legal.py @@ -111,7 +111,7 @@ async def get_privacy_policy(request: Request) -> HTMLResponse: accept_language = request.headers.get("accept-language") lang = _resolve_lang(accept_language) content, resolved = choose_content_by_lang(PRIVACY_POLICY_MD, lang) - title = "Hey Mama | Privacy Policy" if resolved == "en" else "Hey Mama|隱私權政策" + title = "Dear Mama | Privacy Policy" if resolved == "en" else "Dear Mama|隱私權政策" page = render_as_simple_html(title=title, content=content) return HTMLResponse(content=page, headers={"Content-Language": "en" if resolved == "en" else "zh-Hant"}) @@ -125,7 +125,7 @@ async def get_terms_of_use(request: Request) -> HTMLResponse: accept_language = request.headers.get("accept-language") lang = _resolve_lang(accept_language) content, resolved = choose_content_by_lang(TERMS_OF_USE_MD, lang) - title = "Hey Mama – Terms of Use" if resolved == "en" else "Hey Mama 使用條款" + title = "Dear Mama – Terms of Use" if resolved == "en" else "Dear Mama 使用條款" page = render_as_simple_html(title=title, content=content) return HTMLResponse(content=page, headers={"Content-Language": "en" if resolved == "en" else "zh-Hant"}) diff --git a/server/app/api/v1/push.py b/server/app/api/v1/push.py index ec43968..cee276e 100644 --- a/server/app/api/v1/push.py +++ b/server/app/api/v1/push.py @@ -256,7 +256,7 @@ async def test_push( _ = UserProfileV1_2.model_validate(pref.user_profile_json) # V1:先发固定测试文案;后续在定时任务中替换为推荐模块的 push 场景模板 - title = req.title or "Hey Mama" + title = req.title or "Dear Mama" body = req.body or "这是一条测试推送(dev)。" expo_res = await _send_expo_push(to=token.push_token, title=title, body=body, data={"client_user_id": req.client_user_id}) diff --git a/server/app/legal_docs.py b/server/app/legal_docs.py index 8697aee..ebf9b1b 100644 --- a/server/app/legal_docs.py +++ b/server/app/legal_docs.py @@ -11,21 +11,21 @@ ResolvedLang = Literal["en", "tc"] # 协议原文(直接来自仓库中的 Markdown 文档)。 # 说明:为了保证“点击一定有内容”,这里在后端内置了一份可展示的协议文本。 # 线上若你们有官网/静态站点托管页面,可通过环境变量 LEGAL_* 覆盖为外部链接。 -PRIVACY_POLICY_MD = """Hey Mama | Privacy Policy +PRIVACY_POLICY_MD = """Dear Mama | Privacy Policy Last updated: February 2026 1. Introduction -Welcome to Hey Mama (“the App,” “we,” “us”). +Welcome to Dear Mama (“the App,” “we,” “us”). We respect your privacy and are committed to protecting your personal information. This Privacy Policy explains how we collect, use, store, and protect information when you use the App. By downloading, accessing, or using the App, you acknowledge that you have read, understood, and agreed to this Privacy Policy. 2. Data Controller and Scope -The App is operated and maintained by the Hey Mama team. +The App is operated and maintained by the Dear Mama team. This Privacy Policy applies to information processing activities related to your use of the App. 3. Information We Collect 3.1 Information You Provide -Hey Mama does not require account registration and does not require you to provide personally identifiable information. +Dear Mama does not require account registration and does not require you to provide personally identifiable information. During your use of the App, you may optionally provide or generate the following information: - Reminder settings (e.g., reminder frequency) - Text content you view, save as favorites, or create within the App (if available) @@ -59,7 +59,7 @@ We do not: - Use your data for third-party advertising purposes 7. Third-Party Services -Hey Mama currently does not integrate third-party advertising or marketing services. +Dear Mama currently does not integrate third-party advertising or marketing services. The App may rely on necessary operating system and app store services to provide functionality (for example, push notification delivery mechanisms). If we later integrate third-party analytics or technical services, we will update this Privacy Policy accordingly. @@ -67,7 +67,7 @@ If we later integrate third-party analytics or technical services, we will updat We retain information only for as long as necessary to achieve the purposes described above. We implement reasonable technical and organizational measures to protect information against unauthorized access, disclosure, alteration, or loss. 9. Minors -Hey Mama is not designed for children, and we do not knowingly collect personal information from users under the age of 13. +Dear Mama is not designed for children, and we do not knowingly collect personal information from users under the age of 13. If you are a minor, please use the App with the consent and supervision of a parent or guardian. 10. Changes to This Privacy Policy @@ -75,17 +75,17 @@ We may update this Privacy Policy from time to time. The updated version will be --- -Hey Mama|隱私權政策 +Dear Mama|隱私權政策 最後更新日期:2026 年 2 月 一、前言 -歡迎使用 Hey Mama(以下簡稱「本 App」、「我們」)。 -我們重視您的隱私,並致力於保護您的個人資料安全。本隱私權政策說明您在使用 Hey Mama 時,我們如何收集、使用、保存與保護相關資訊。 +歡迎使用 Dear Mama(以下簡稱「本 App」、「我們」)。 +我們重視您的隱私,並致力於保護您的個人資料安全。本隱私權政策說明您在使用 Dear Mama 時,我們如何收集、使用、保存與保護相關資訊。 當您下載、存取或使用本 App,即表示您已閱讀、理解並同意本隱私權政策之內容。 二、我們收集的資訊 1. 使用者主動提供的資訊 -Hey Mama 不要求建立帳號,亦不強制使用者提供可識別個人身分的資料。 +Dear Mama 不要求建立帳號,亦不強制使用者提供可識別個人身分的資料。 在使用過程中,您可能會選擇性提供或產生以下資訊: - 提醒設定(例如提醒頻率) - 使用者在 App 內閱讀、收藏或建立的文字內容(如有) @@ -99,7 +99,7 @@ Hey Mama 不要求建立帳號,亦不強制使用者提供可識別個人身 這些資訊無法直接識別您的身分,僅用於維持 App 穩定性與改善使用體驗。 三、推送通知 -在取得您同意後,Hey Mama 可能會向您發送提醒推送,例如每日肯定語提示。 +在取得您同意後,Dear Mama 可能會向您發送提醒推送,例如每日肯定語提示。 - 推送內容僅包含一般文字資訊 - 不包含任何敏感個人資料 - 您可隨時於裝置系統設定中關閉通知功能 @@ -117,14 +117,14 @@ Hey Mama 不要求建立帳號,亦不強制使用者提供可識別個人身 - 將資料用於第三方廣告投放 六、第三方服務 -目前 Hey Mama 未整合第三方廣告或行銷服務。 +目前 Dear Mama 未整合第三方廣告或行銷服務。 如未來整合第三方分析或技術服務,我們將於本政策中另行說明並更新。 七、資料保存與安全 我們僅在達成上述目的所需期間內保存相關資訊,並採取合理的技術與管理措施,以防止資料遭未經授權存取、洩漏、竄改或遺失。 八、未成年人說明 -Hey Mama 並非專為兒童設計,亦不刻意收集未滿 13 歲使用者的個人資料。 +Dear Mama 並非專為兒童設計,亦不刻意收集未滿 13 歲使用者的個人資料。 若您為未成年人,請在監護人同意與陪同下使用本 App。 九、隱私權政策的變更 @@ -132,17 +132,17 @@ Hey Mama 並非專為兒童設計,亦不刻意收集未滿 13 歲使用者的 更新後的版本將公布於 App 內或相關頁面,您於政策更新後繼續使用本 App,即視為同意更新內容。 """ -TERMS_OF_USE_MD = """Hey Mama – Terms of Use +TERMS_OF_USE_MD = """Dear Mama – Terms of Use Last updated: February 2026 -Welcome to Hey Mama (“the App,” “we,” or “us”). +Welcome to Dear Mama (“the App,” “we,” or “us”). Please read these Terms of Use carefully before downloading, accessing, or using the App. By using the App, you agree to be bound by these Terms. 1. Intended Audience -Hey Mama is intended for adults only. +Dear Mama is intended for adults only. The App is not designed for children, and users must ensure they have the legal capacity to use the App under applicable laws. 2. Services Provided -Hey Mama provides text-based content and features, including but not limited to: +Dear Mama provides text-based content and features, including but not limited to: - Daily affirmations and mindfulness text - User-configured reminders and push notifications - Home screen widgets displaying affirmation text @@ -184,17 +184,17 @@ Updated versions will be made available within the App or related pages. Continu These Terms shall be governed by and construed in accordance with the applicable laws of our operating jurisdiction. --- -Hey Mama 使用條款 +Dear Mama 使用條款 最後更新日期:2026 年 2 月 -歡迎使用 Hey Mama(以下簡稱「本 App」、「我們」)。 +歡迎使用 Dear Mama(以下簡稱「本 App」、「我們」)。 在下載、存取或使用本 App 前,請您仔細閱讀本使用條款。當您開始使用本 App,即表示您已閱讀、理解並同意遵守本條款。 1. 服務對象與使用資格 -Hey Mama 僅供成年人使用(intended for adults)。 +Dear Mama 僅供成年人使用(intended for adults)。 本 App 並非為兒童設計,使用者應確認自己具備依所在地法律使用本服務的完全行為能力。 2. 服務內容 -Hey Mama 提供以文字形式為主的內容與功能,包括但不限於: +Dear Mama 提供以文字形式為主的內容與功能,包括但不限於: - 每日肯定語與正念文字內容 - 使用者設定的提醒與推送通知 - 桌面小組件顯示肯定語文字 diff --git a/spec_kit/overview.md b/spec_kit/overview.md index 34f8e1c..47ab100 100644 --- a/spec_kit/overview.md +++ b/spec_kit/overview.md @@ -89,9 +89,9 @@ - iOS 构建号已提升到 `2`,并将 `client/ios/client/Info.plist` 改为自动跟随 `MARKETING_VERSION` / `CURRENT_PROJECT_VERSION` - 推送 entitlements 的 `aps-environment` 已切到 `production`(用于 TestFlight/线上包) - 清理未接入编译的 WidgetKit 骨架残留:移除磁盘上的 `client/ios/MindfulnessWidget/` 文件,并从 `client/ios/client.xcodeproj/project.pbxproj` 删除对应工程引用(避免 Xcode 显示幽灵文件) - - 修复 Xcode Archive 偶发显示 “Generic Xcode Archive”:在共享 scheme `Hey Mama` 的 Archive Post-actions 自动补齐 `.xcarchive/Info.plist` 的 `ApplicationProperties`,并在缺失时补齐 `Name`/`SchemeName` + 自检提示(根治 Organizer 无法识别主 App、无法分发/上传 TestFlight 的问题) + - 修复 Xcode Archive 偶发显示 “Generic Xcode Archive”:在共享 scheme `Dear Mama` 的 Archive Post-actions 自动补齐 `.xcarchive/Info.plist` 的 `ApplicationProperties`,并在缺失时补齐 `Name`/`SchemeName` + 自检提示(根治 Organizer 无法识别主 App、无法分发/上传 TestFlight 的问题) - Widget 名称与描述支持多语言(TC/EN,默认 EN):Widget Extension 增加 `Localizable.strings`(`en.lproj` / `zh-Hant.lproj`),`EmotionWidget.swift` 使用本地化 key 作为 `.configurationDisplayName/.description` - - 个人主页弹窗:小工具入口**暂时隐藏**锁屏小工具说明;桌面小工具引导弹窗标题(繁中/TC)更新为“**如何加入小工具**”(并统一弹窗标题使用该文案);品牌文案“正念”改为 **Hey Mama**(含引导搜索词与 Widget 标题) + - 个人主页弹窗:小工具入口**暂时隐藏**锁屏小工具说明;桌面小工具引导弹窗标题(繁中/TC)更新为“**如何加入小工具**”(并统一弹窗标题使用该文案);品牌文案改为 **Dear Mama**(含引导搜索词与 Widget 标题) ## Text Wrap diff --git a/设计说明文档/用户使用协议.md b/设计说明文档/用户使用协议.md index 12f586d..200296e 100644 --- a/设计说明文档/用户使用协议.md +++ b/设计说明文档/用户使用协议.md @@ -1,14 +1,14 @@ -Hey Mama – Terms of Use +Dear Mama – Terms of Use Last updated: February 2026 -Welcome to Hey Mama (“the App,” “we,” or “us”). +Welcome to Dear Mama (“the App,” “we,” or “us”). Please read these Terms of Use carefully before downloading, accessing, or using the App. By using the App, you agree to be bound by these Terms. 1. Intended Audience -Hey Mama is intended for adults only. +Dear Mama is intended for adults only. The App is not designed for children, and users must ensure they have the legal capacity to use the App under applicable laws. 2. Services Provided -Hey Mama provides text-based content and features, including but not limited to: +Dear Mama provides text-based content and features, including but not limited to: - Daily affirmations and mindfulness text - User-configured reminders and push notifications - Home screen widgets displaying affirmation text @@ -50,17 +50,17 @@ Updated versions will be made available within the App or related pages. Continu These Terms shall be governed by and construed in accordance with the applicable laws of our operating jurisdiction. --- -Hey Mama 使用條款 +Dear Mama 使用條款 最後更新日期:2026 年 2 月 -歡迎使用 Hey Mama(以下簡稱「本 App」、「我們」)。 +歡迎使用 Dear Mama(以下簡稱「本 App」、「我們」)。 在下載、存取或使用本 App 前,請您仔細閱讀本使用條款。當您開始使用本 App,即表示您已閱讀、理解並同意遵守本條款。 1. 服務對象與使用資格 -Hey Mama 僅供成年人使用(intended for adults)。 +Dear Mama 僅供成年人使用(intended for adults)。 本 App 並非為兒童設計,使用者應確認自己具備依所在地法律使用本服務的完全行為能力。 2. 服務內容 -Hey Mama 提供以文字形式為主的內容與功能,包括但不限於: +Dear Mama 提供以文字形式為主的內容與功能,包括但不限於: - 每日肯定語與正念文字內容 - 使用者設定的提醒與推送通知 - 桌面小組件顯示肯定語文字 diff --git a/设计说明文档/隐私协议.md b/设计说明文档/隐私协议.md index 0f91358..e6d4b8b 100644 --- a/设计说明文档/隐私协议.md +++ b/设计说明文档/隐私协议.md @@ -1,18 +1,18 @@ -Hey Mama | Privacy Policy +Dear Mama | Privacy Policy Last updated: February 2026 1. Introduction -Welcome to Hey Mama (“the App,” “we,” “us”). +Welcome to Dear Mama (“the App,” “we,” “us”). We respect your privacy and are committed to protecting your personal information. This Privacy Policy explains how we collect, use, store, and protect information when you use the App. By downloading, accessing, or using the App, you acknowledge that you have read, understood, and agreed to this Privacy Policy. 2. Data Controller and Scope -The App is operated and maintained by the Hey Mama team. +The App is operated and maintained by the Dear Mama team. This Privacy Policy applies to information processing activities related to your use of the App. 3. Information We Collect 3.1 Information You Provide -Hey Mama does not require account registration and does not require you to provide personally identifiable information. +Dear Mama does not require account registration and does not require you to provide personally identifiable information. During your use of the App, you may optionally provide or generate the following information: - Reminder settings (e.g., reminder frequency) - Text content you view, save as favorites, or create within the App (if available) @@ -46,7 +46,7 @@ We do not: - Use your data for third-party advertising purposes 7. Third-Party Services -Hey Mama currently does not integrate third-party advertising or marketing services. +Dear Mama currently does not integrate third-party advertising or marketing services. The App may rely on necessary operating system and app store services to provide functionality (for example, push notification delivery mechanisms). If we later integrate third-party analytics or technical services, we will update this Privacy Policy accordingly. @@ -54,7 +54,7 @@ If we later integrate third-party analytics or technical services, we will updat We retain information only for as long as necessary to achieve the purposes described above. We implement reasonable technical and organizational measures to protect information against unauthorized access, disclosure, alteration, or loss. 9. Minors -Hey Mama is not designed for children, and we do not knowingly collect personal information from users under the age of 13. +Dear Mama is not designed for children, and we do not knowingly collect personal information from users under the age of 13. If you are a minor, please use the App with the consent and supervision of a parent or guardian. 10. Changes to This Privacy Policy @@ -62,17 +62,17 @@ We may update this Privacy Policy from time to time. The updated version will be --- -Hey Mama|隱私權政策 +Dear Mama|隱私權政策 最後更新日期:2026 年 2 月 一、前言 -歡迎使用 Hey Mama(以下簡稱「本 App」、「我們」)。 -我們重視您的隱私,並致力於保護您的個人資料安全。本隱私權政策說明您在使用 Hey Mama 時,我們如何收集、使用、保存與保護相關資訊。 +歡迎使用 Dear Mama(以下簡稱「本 App」、「我們」)。 +我們重視您的隱私,並致力於保護您的個人資料安全。本隱私權政策說明您在使用 Dear Mama 時,我們如何收集、使用、保存與保護相關資訊。 當您下載、存取或使用本 App,即表示您已閱讀、理解並同意本隱私權政策之內容。 二、我們收集的資訊 1. 使用者主動提供的資訊 -Hey Mama 不要求建立帳號,亦不強制使用者提供可識別個人身分的資料。 +Dear Mama 不要求建立帳號,亦不強制使用者提供可識別個人身分的資料。 在使用過程中,您可能會選擇性提供或產生以下資訊: - 提醒設定(例如提醒頻率) - 使用者在 App 內閱讀、收藏或建立的文字內容(如有) @@ -86,7 +86,7 @@ Hey Mama 不要求建立帳號,亦不強制使用者提供可識別個人身 這些資訊無法直接識別您的身分,僅用於維持 App 穩定性與改善使用體驗。 三、推送通知 -在取得您同意後,Hey Mama 可能會向您發送提醒推送,例如每日肯定語提示。 +在取得您同意後,Dear Mama 可能會向您發送提醒推送,例如每日肯定語提示。 - 推送內容僅包含一般文字資訊 - 不包含任何敏感個人資料 - 您可隨時於裝置系統設定中關閉通知功能 @@ -104,14 +104,14 @@ Hey Mama 不要求建立帳號,亦不強制使用者提供可識別個人身 - 將資料用於第三方廣告投放 六、第三方服務 -目前 Hey Mama 未整合第三方廣告或行銷服務。 +目前 Dear Mama 未整合第三方廣告或行銷服務。 如未來整合第三方分析或技術服務,我們將於本政策中另行說明並更新。 七、資料保存與安全 我們僅在達成上述目的所需期間內保存相關資訊,並採取合理的技術與管理措施,以防止資料遭未經授權存取、洩漏、竄改或遺失。 八、未成年人說明 -Hey Mama 並非專為兒童設計,亦不刻意收集未滿 13 歲使用者的個人資料。 +Dear Mama 並非專為兒童設計,亦不刻意收集未滿 13 歲使用者的個人資料。 若您為未成年人,請在監護人同意與陪同下使用本 App。 九、隱私權政策的變更 -- 2.49.1 From dec3ac82e1b7bbdd610e82da5f367f817b233265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=96=B0=E9=9B=A8?= Date: Tue, 10 Feb 2026 16:47:18 +0800 Subject: [PATCH 06/19] =?UTF-8?q?fix:=E5=90=8E=E7=AB=AF=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/app/(onboarding)/onboarding.tsx | 11 +++++------ client/app/_layout.tsx | 11 +++++++++++ client/components/home/ProfileModal.tsx | 7 +++---- client/src/services/pushApi.ts | 7 ++++++- server/app/api/v1/push.py | 7 ++++--- 5 files changed, 29 insertions(+), 14 deletions(-) diff --git a/client/app/(onboarding)/onboarding.tsx b/client/app/(onboarding)/onboarding.tsx index f4b2e98..c3f7e8d 100644 --- a/client/app/(onboarding)/onboarding.tsx +++ b/client/app/(onboarding)/onboarding.tsx @@ -12,7 +12,7 @@ import { buildUserProfileFromQuestionnaire, mapOnboardingSelectionsToQuestionnai import { ensureDailyWidgetRecoUpToDate, syncWidgetConfig, syncWidgetUserProfileFromScoring } from '@/src/modules/dailyWidgetReco'; import { toBackendLocaleFromLanguageTag } from '@/src/i18n/locale'; import { fetchRecoFeed } from '@/src/services/recoApi'; -import { getExpoPushTokenOrThrow, registerPushToken, setPushPreferences } from '@/src/services/pushApi'; +import { ensurePushTokenRegisteredIfPermitted, setPushPreferences } from '@/src/services/pushApi'; import { recordRecoFeedServed, setOnboardingCompleted, @@ -128,7 +128,8 @@ export default function OnboardingScreen() { await setPushPromptState('unknown'); try { const { status } = await Notifications.requestPermissionsAsync(); - if (status !== 'granted') { + // iOS 可能出现 provisional(临时授权),也应视为“已授权” + if (status !== 'granted' && status !== ('provisional' as any)) { await setPushPromptState('skipped'); return; } @@ -140,10 +141,8 @@ export default function OnboardingScreen() { return; } - // 1) 获取 Expo Push Token(失败才认为“推送开启失败”) - const expoPushToken = await getExpoPushTokenOrThrow(); - // 2) 上报 token 到后端(幂等;失败才认为“推送开启失败”) - await registerPushToken({ pushToken: expoPushToken }); + // 1) 上报 token 到后端(幂等;失败才认为“推送开启失败”) + await ensurePushTokenRegisteredIfPermitted(); // 3) 上报推送偏好(幂等) // 注意:这一步失败时,后端仍可能已成功接收 token。 diff --git a/client/app/_layout.tsx b/client/app/_layout.tsx index c9f09dc..5da97d7 100644 --- a/client/app/_layout.tsx +++ b/client/app/_layout.tsx @@ -87,6 +87,17 @@ export default function RootLayout() { }); }, []); + useEffect(() => { + // 兜底:当用户在系统弹窗/系统设置里变更权限后,App 回到前台时再同步一次 token + const sub = AppState.addEventListener('change', (state) => { + if (state !== 'active') return; + ensurePushTokenRegisteredIfPermitted().catch(() => { + // ignore:不阻塞 + }); + }); + return () => sub.remove(); + }, []); + useEffect(() => { // 字体与 i18n 都准备好后,允许渲染 App(原生 splash 的隐藏交给 onLayout,避免“硬切/闪白”) if (loaded && i18nReady) setAppReady(true); diff --git a/client/components/home/ProfileModal.tsx b/client/components/home/ProfileModal.tsx index d484486..200d0bf 100644 --- a/client/components/home/ProfileModal.tsx +++ b/client/components/home/ProfileModal.tsx @@ -41,7 +41,7 @@ import QuestionIcon from '@/assets/images/home/Profile/widget/question_icon.svg' import * as Notifications from 'expo-notifications'; import { changeLanguage } from '@/src/i18n'; import { fetchLegalLinks } from '@/src/services/legalApi'; -import { ensurePushTokenRegisteredIfPermitted, getExpoPushTokenOrThrow, registerPushToken, setPushPreferences } from '@/src/services/pushApi'; +import { ensurePushTokenRegisteredIfPermitted, setPushPreferences } from '@/src/services/pushApi'; const { width } = Dimensions.get('window'); @@ -430,14 +430,13 @@ function DailyReminderPage({ visible, onDone }: { visible: boolean; onDone: () = // 调试:打印状态 console.log('Push Permission Status:', status); - if (status === 'granted') { + if (status === 'granted' || (status as any) === 'provisional') { setPushEnabled(true); setHasSystemPermission(true); // 获取 token 并上报后端(幂等) try { - const expoPushToken = await getExpoPushTokenOrThrow(); - await registerPushToken({ pushToken: expoPushToken }); + await ensurePushTokenRegisteredIfPermitted(); // 偏好同步失败不应被用户感知为“开启失败” // (常见现象:后端已接收 token,但偏好接口短暂失败/超时) try { diff --git a/client/src/services/pushApi.ts b/client/src/services/pushApi.ts index 38b06b7..84b1c3c 100644 --- a/client/src/services/pushApi.ts +++ b/client/src/services/pushApi.ts @@ -160,10 +160,15 @@ export async function registerPushToken(args: { pushToken: string }): Promise { // 只要系统权限已授权,就应尽早把 token 写入后端(不依赖用户在“每日提醒”里点确认) const settings = await Notifications.getPermissionsAsync(); - if (settings.status !== 'granted') return { ok: false, reason: 'permission_not_granted' }; + if (!isSystemNotificationPermissionGranted(settings.status)) return { ok: false, reason: 'permission_not_granted' }; const token = await getExpoPushTokenOrThrow(); diff --git a/server/app/api/v1/push.py b/server/app/api/v1/push.py index ec43968..ae9b8c9 100644 --- a/server/app/api/v1/push.py +++ b/server/app/api/v1/push.py @@ -194,9 +194,10 @@ async def put_preferences(req: PushPreferencesRequest, db: AsyncSession = Depend await db.commit() - # 返回更新时间(从 ORM 读取到的可能不包含 server_onupdate,这里用 now 兜底) - updated_at = getattr(pref, "updated_at", None) - updated_at_iso = updated_at.isoformat() if isinstance(updated_at, datetime) else None + # 返回更新时间: + # - 某些运行环境/驱动组合下,commit 后访问 ORM 字段可能触发隐式 IO,导致 async 下报 MissingGreenlet。 + # - 这里直接用当前时间兜底(字段本身为可选,仅用于前端展示)。 + updated_at_iso = datetime.now(timezone.utc).isoformat() return PushPreferencesResponse( client_user_id=req.client_user_id, -- 2.49.1 From 154f347ddbe9a225e42735a3448fb36178999fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=96=B0=E9=9B=A8?= Date: Tue, 10 Feb 2026 16:57:36 +0800 Subject: [PATCH 07/19] =?UTF-8?q?=E6=B3=A8=E5=86=8Ctoken=E6=8E=92=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/app/api/v1/push.py | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/server/app/api/v1/push.py b/server/app/api/v1/push.py index ae9b8c9..07814aa 100644 --- a/server/app/api/v1/push.py +++ b/server/app/api/v1/push.py @@ -7,7 +7,7 @@ import httpx import redis from fastapi import APIRouter, Depends, Header, HTTPException, Query from pydantic import BaseModel, Field -from sqlalchemy import select +from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession from app.api.limits import rate_limit_push_by_ip @@ -297,6 +297,7 @@ async def scheduler_health(db: AsyncSession = Depends(get_db)) -> dict[str, Any] "worker": {"ok": False, "worker_count": 0}, "beat": {"ok": False, "last_heartbeat_at": None, "age_seconds": None}, "db": {"ok": False, "push_send_log_latest_created_at": None}, + "db_push_tokens": {"ok": False, "count": None, "latest": None}, "now_utc": datetime.now(timezone.utc).isoformat(), } @@ -343,5 +344,36 @@ async def scheduler_health(db: AsyncSession = Depends(get_db)) -> dict[str, Any] except Exception as e: out["db"]["error"] = f"{type(e).__name__}: {e}" + # 4) DB:查询 push_tokens 计数与最近一条(用于确认 /v1/push/register 是否真正落库) + try: + qcount = select(func.count()).select_from(PushToken) + rcount = await db.execute(qcount) + cnt = int(rcount.scalar_one() or 0) + + qlatest = select(PushToken).order_by(PushToken.last_seen_at.desc()).limit(1) + rlatest = await db.execute(qlatest) + t = rlatest.scalar_one_or_none() + + latest_obj = None + if t is not None: + tok = str(t.push_token or "") + masked = tok[:10] + "***" + tok[-6:] if len(tok) > 20 else (tok[:6] + "***" if tok else "") + latest_obj = { + "id": int(getattr(t, "id", 0) or 0), + "client_user_id": str(t.client_user_id), + "env": str(t.env), + "app_id": str(t.app_id), + "platform": str(t.platform), + "is_active": bool(t.is_active), + "last_seen_at": t.last_seen_at.isoformat() if t.last_seen_at else None, + "push_token_masked": masked, + } + + out["db_push_tokens"]["ok"] = True + out["db_push_tokens"]["count"] = cnt + out["db_push_tokens"]["latest"] = latest_obj + except Exception as e: + out["db_push_tokens"]["error"] = f"{type(e).__name__}: {e}" + return out -- 2.49.1 From 076bd5636f5e57811d3bd7b642d24183593a1c2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=96=B0=E9=9B=A8?= Date: Tue, 10 Feb 2026 17:23:38 +0800 Subject: [PATCH 08/19] =?UTF-8?q?fix:=E6=9B=B4=E6=96=B0APP-PUSH?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/services/pushApi.ts | 25 ++++++++++++++++------ client/src/storage/appStorage.ts | 35 +++++++++++++++++++++++++++++-- server/celerybeat-schedule-shm | Bin 0 -> 32768 bytes server/celerybeat-schedule-wal | Bin 0 -> 107152 bytes 4 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 server/celerybeat-schedule-shm create mode 100644 server/celerybeat-schedule-wal diff --git a/client/src/services/pushApi.ts b/client/src/services/pushApi.ts index 84b1c3c..31bc19a 100644 --- a/client/src/services/pushApi.ts +++ b/client/src/services/pushApi.ts @@ -7,10 +7,10 @@ import { httpJson } from '../utils/http'; import { APP_ENV } from '../constants/env'; import { getDailyReminderSettings, - getLastRegisteredPushToken, + getLastRegisteredPushPayload, getOrCreateClientUserId, getUserProfileScoring, - setLastRegisteredPushToken, + setLastRegisteredPushPayload, } from '../storage/appStorage'; import type { UserProfileScoring } from '../storage/appStorage'; import { toBackendLocaleFromLanguageTag } from '../i18n/locale'; @@ -170,14 +170,27 @@ export async function ensurePushTokenRegisteredIfPermitted(): Promise<{ ok: bool const settings = await Notifications.getPermissionsAsync(); if (!isSystemNotificationPermissionGranted(settings.status)) return { ok: false, reason: 'permission_not_granted' }; + const clientUserId = await getOrCreateClientUserId(); const token = await getExpoPushTokenOrThrow(); + const env = toPushEnv(APP_ENV); + const appId = pickAppId(); - // 简单去重:token 未变化则不重复上报(减少网络与日志噪音) - const last = await getLastRegisteredPushToken().catch(() => null); - if (last && String(last) === String(token)) return { ok: true, reason: 'already_registered' }; + // 去重规则(更严格): + // - 只有当 token + client_user_id + env + app_id 全都一致时才跳过 + // - 避免出现“client_user_id 变化但 token 没变,导致后端绑定不更新”的问题 + const last = await getLastRegisteredPushPayload().catch(() => null); + if ( + last && + last.pushToken === token && + last.clientUserId === clientUserId && + last.env === env && + last.appId === appId + ) { + return { ok: true, reason: 'already_registered' }; + } await registerPushToken({ pushToken: token }); - await setLastRegisteredPushToken(token); + await setLastRegisteredPushPayload({ pushToken: token, clientUserId, env, appId }); return { ok: true, reason: 'registered' }; } diff --git a/client/src/storage/appStorage.ts b/client/src/storage/appStorage.ts index 84f7b2d..ea505da 100644 --- a/client/src/storage/appStorage.ts +++ b/client/src/storage/appStorage.ts @@ -18,8 +18,9 @@ const KEY_RECO_FEED_HISTORY = 'reco.feedHistory'; const KEY_UI_THEME_MODE = 'ui.theme.mode'; const KEY_UI_THEME_SUIXIN_STATE = 'ui.theme.suixin.state'; const KEY_DAILY_REMINDER_SETTINGS = 'dailyReminder.settings'; -const KEY_PUSH_LAST_REGISTERED_TOKEN = 'push.lastRegisteredToken'; -const KEY_PUSH_LAST_REGISTERED_AT = 'push.lastRegisteredAt'; +const KEY_PUSH_LAST_REGISTERED_TOKEN = 'push.lastRegisteredToken'; // 旧:仅 token(保留兼容读取) +const KEY_PUSH_LAST_REGISTERED_AT = 'push.lastRegisteredAt'; // 旧:时间(保留兼容) +const KEY_PUSH_LAST_REGISTERED_PAYLOAD = 'push.lastRegisteredPayload'; // 新:token+client_user_id+env+app_id export type PushPromptState = 'enabled' | 'skipped' | 'unknown'; export type Reaction = 'like' | 'dislike'; @@ -81,6 +82,36 @@ export async function setLastRegisteredPushToken(token: string): Promise { await AsyncStorage.setItem(KEY_PUSH_LAST_REGISTERED_AT, new Date().toISOString()); } +export type LastRegisteredPushPayload = { + pushToken: string; + clientUserId: string; + env: 'dev' | 'prod'; + appId: string; + savedAt: string; // ISO8601 +}; + +export async function getLastRegisteredPushPayload(): Promise { + const raw = await AsyncStorage.getItem(KEY_PUSH_LAST_REGISTERED_PAYLOAD); + if (!raw) return null; + try { + const obj = JSON.parse(raw) as Partial; + if (!obj || typeof obj !== 'object') return null; + if (!obj.pushToken || !obj.clientUserId || !obj.env || !obj.appId || !obj.savedAt) return null; + if (obj.env !== 'dev' && obj.env !== 'prod') return null; + return obj as LastRegisteredPushPayload; + } catch { + return null; + } +} + +export async function setLastRegisteredPushPayload(payload: Omit): Promise { + const savedAt = new Date().toISOString(); + const full: LastRegisteredPushPayload = { ...payload, savedAt }; + await AsyncStorage.setItem(KEY_PUSH_LAST_REGISTERED_PAYLOAD, JSON.stringify(full)); + // 同时写入旧 key,便于兼容老逻辑/快速排查 + await setLastRegisteredPushToken(payload.pushToken); +} + export type RecoFeedCacheItem = { content_id: number; text: string; diff --git a/server/celerybeat-schedule-shm b/server/celerybeat-schedule-shm new file mode 100644 index 0000000000000000000000000000000000000000..8247f6cda01b4b87c44e24535c84436d541f99bf GIT binary patch literal 32768 zcmeI)J4!=Q5C-5s@ez%$#AtFAdqEJ~gsqT0qz?hN;Vx{lffRO@*@jCn2zGj|NU*ig z+k6AV42Q#+!?%E`UanKeLCIFqJ1=#kMQDZKYqmb@w&82SI_2LEI1ar9U2Ak*TSe!{^$fq6Y7)#Dq^srA%+AiFA_Xw`|!1- z?`fJi-&9tfobP%2oO4p_U!Q0FGj-1@u?s5{rAcwWE^VL8rC({E+4v4gvJ^*D)uTXr7_#cnE(-W!M8a4MfOEN#FYd?GB*3A8)=3elt*g!7eql0J)9N?x=U?3rdz{q&JCL}7bm6*EpHW>^qRJ5kJ~Fs zQnE_XQ}tD8C`p8u%Zr+K^rgiK)atEmcCh_{2a6-Te3aK5)iUp@X{kYBq}5bbXhvb! zkt5T)_)FQ#qBN7;n;z7<^C!rvbTD1a5$3}(&VkzigPc-o4bS2B?T*` z3PT&niu941o$Z$SBq8zRAI!1o41cU`b4U>$nMJ?wj{;88i1%kl!f-`m~QpFH~S|K$aW zX@SVwb85;A1_1;RKmY**5I_I{1Q3|>0^|kA3(Q_#VB-wt1t#vf@4XFwoY+oYV9wuU z7$5=&Ab+Xp9-J8$IA=2YYVt*3_y(l z0tg_000IagfB*srAaFAR5I_I{1Q0*~0R#|OXac^F zfUmgeiv0*~G%pZsefU#$3X z`H^^4t}-y^@&Y|GxF5mf@IMb9J^sc8@&dPe51>8*2q1s}0tg_000IagfB*usA>a!M z_=;D_3-nxXKZ3m2MeIISE#n(7-`E$^HT-rXFOTW@S`S9Tvl|FGF5Sr!KjXP7iNEfoASGG0cj5}?5 zz>Zp)IcUb+cH&+;YOx))(oREKwr*vHgkx8V<4#Yw{^Fu=sIIQz%_H)efkGy0Wen4? z>-Pyuv#h-A!)`c~GepMNo0G+-WwFmK%HtumU<_wcgIVDmb9Oj(aQChrClPSV?jsSf zo64j2#^E-c%I6GA8*m4o2qzRf(C+9f^_7;aG3pH5KPuZD(hjNxQ+~YdY&+g!$|JS= z3!)&09!`q`-K91i)2(4Q=Z4Lgixbm@mbZ#bdQIE3$L$p*DOn}%o~Zh&G!!L5;pOrL znRoQ1#R=5vt!;L&{ecIIBfNZ+qt0F3kKm@(7r2GIz>`Dk{{Gc9-{>PRP~CSZW`_U* z2q1s}0tg_000IagP%Q$!kbtlFxV!N{!AhyZ&<3(1eUgUFuQ$c*EzsfEfpz6%LM1&R(-QUK z;BY1{WP0MQ*NQ2LLcIA-=LN#AUb^@EOr zSb6WvhZ=c-oBf^Vd;}0c009ILKmY**5I_I{1n!1_FC^eAZoS34z|`t@$4-BK;=AMp z?#8vGPXrJ^009ILKmY**5U3u3v1Ee0z&yzdELW5lr@Xwt@`aukczxn;tM)% Date: Wed, 11 Feb 2026 11:14:51 +0800 Subject: [PATCH 09/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/ios/Podfile.lock | 166 ++++++++++++++++----------------- server/app/tasks/push.py | 92 +++++++++++++++--- server/app/worker.py | 8 ++ server/celerybeat-schedule | Bin 12288 -> 12288 bytes server/celerybeat-schedule-shm | Bin 32768 -> 0 bytes server/celerybeat-schedule-wal | Bin 107152 -> 0 bytes 6 files changed, 172 insertions(+), 94 deletions(-) delete mode 100644 server/celerybeat-schedule-shm delete mode 100644 server/celerybeat-schedule-wal diff --git a/client/ios/Podfile.lock b/client/ios/Podfile.lock index 92b7591..cc8c4c5 100644 --- a/client/ios/Podfile.lock +++ b/client/ios/Podfile.lock @@ -2540,30 +2540,30 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - EXApplication: 1e98d4b1dccdf30627f92917f4b2c5a53c330e5f - EXConstants: fce59a631a06c4151602843667f7cfe35f81e271 + EXApplication: 13420f8139864183f8a04fd6099077bdf8cfb186 + EXConstants: 3feb66fd1d94202fc1f0946d74e029d8b224b60e EXJSONUtils: 1d3e4590438c3ee593684186007028a14b3686cd - EXManifests: a8d97683e5c7a3b026ffbd58559c64dc655b747b - EXNotifications: 9eec98712cc814ceff916d876cb53859003b0597 - Expo: 4e503a041c59c4e34c8be262a135848ad5cd3710 - expo-dev-client: 425ee077d6754a98cfe3a2e2410d29b440b24c9d - expo-dev-launcher: a4f4cdef064ab1fb8621e5b8c7c457cd6e9568c3 - expo-dev-menu: 05b18812110c175814c6af0d09dd658abcc5e00d + EXManifests: 83ef0844fcf06d6099b12a7bdbd7d36fc0e1dd16 + EXNotifications: 2a3feb7af6194828d9aafda72f63a9a03866230a + Expo: b8d64eb9a496ebe8c71e3dae7eeb7f394b146b80 + expo-dev-client: 12ef7d5b14d93e309922acea78dcd851db583a87 + expo-dev-launcher: 47994056008ffdc30a6a5e328a375b3e30a8db05 + expo-dev-menu: ea4fb803ace52e60d7cd8060c7cd379612a140b2 expo-dev-menu-interface: 600df12ea01efecdd822daaf13cc0ac091775533 - ExpoAsset: f867e55ceb428aab99e1e8c082b5aee7c159ea18 - ExpoCrypto: b6105ebaa15d6b38a811e71e43b52cd934945322 - ExpoDevice: 6327c3c200816795708885adf540d26ecab83d1a - ExpoFileSystem: 858a44267a3e6e9057e0888ad7c7cfbf55d52063 - ExpoFont: f543ce20a228dd702813668b1a07b46f51878d47 - ExpoHead: 4425246bc93411f0fe7f6945f95f698e91db8780 - ExpoKeepAwake: 55f75eca6499bb9e4231ebad6f3e9cb8f99c0296 - ExpoLinearGradient: 809102bdb979f590083af49f7fa4805cd931bd58 - ExpoLinking: 8f0aaf69aa56f832913030503b6263dc6f647f37 - ExpoLocalization: d9168d5300a5b03e5e78b986124d11fb6ec3ebbd - ExpoModulesCore: f3da4f1ab5a8375d0beafab763739dbee8446583 - ExpoSplashScreen: bc3cffefca2716e5f22350ca109badd7e50ec14d - ExpoWebBrowser: 17b064c621789e41d4816c95c93f429b84971f52 - EXUpdatesInterface: 5adf50cb41e079c861da6d9b4b954c3db9a50734 + ExpoAsset: d999f3bbd998a750f3b74cb913229848901b926b + ExpoCrypto: 4d23a9ff67c25e2ed23ca792d81e58817a7ea1b9 + ExpoDevice: 0773c782b055558ca9b40b74aa4a8133a66cd0d2 + ExpoFileSystem: aefcd337b94b874f88752ebefc52813b84992fad + ExpoFont: c625dbd97ed57e9089b172b2a7bb99003d074664 + ExpoHead: b691a2ed7ab02ed820b6c6468941832d34969c29 + ExpoKeepAwake: 44bf6715bc1d2ddb17afe19d927cd039cda123f0 + ExpoLinearGradient: 814a21fc4056c3cf606e4f19e31e47074c5b5a86 + ExpoLinking: ebf543fd411d56375cb4eee07f6ab4e31c7ad959 + ExpoLocalization: 6ac6f326210f0a3141ef6f58ab8f8f4ed003b485 + ExpoModulesCore: 77496909fd3c800f97f7f2007dd26aeac4bb3798 + ExpoSplashScreen: 72fbc6dd9d6404dd9d0725a56c9ac1383bc0b14f + ExpoWebBrowser: 88b116cd378d9609c776c0903fe4070fca461588 + EXUpdatesInterface: 1436757deb0d574b84bba063bd024c315e0ec08b FBLazyVector: e95a291ad2dadb88e42b06e0c5fb8262de53ec12 hermes-engine: 9f4dfe93326146a1c99eb535b1cb0b857a3cd172 RCTDeprecation: 943572d4be82d480a48f4884f670135ae30bf990 @@ -2571,72 +2571,72 @@ SPEC CHECKSUMS: RCTTypeSafety: 16a4144ca3f959583ab019b57d5633df10b5e97c React: 914f8695f9bf38e6418228c2ffb70021e559f92f React-callinvoker: 1c0808402aee0c6d4a0d8e7220ce6547af9fba71 - React-Core: c61410ef0ca6055e204a963992e363227e0fd1c5 - React-Core-prebuilt: 02f0ad625ddd47463c009c2d0c5dd35c0d982599 - React-CoreModules: 1f6d1744b5f9f2ec684a4bb5ced25370f87e5382 - React-cxxreact: 3af79478e8187b63ffc22b794cd42d3fc1f1f2da + React-Core: 4ae98f9e8135b8ddbd7c98730afb6fdae883db90 + React-Core-prebuilt: 8f4cca589c14e8cf8fc6db4587ef1c2056b5c151 + React-CoreModules: e878a90bb19b8f3851818af997dbae3b3b0a27ac + React-cxxreact: 28af9844f6dc87be1385ab521fbfb3746f19563c React-debug: 6328c2228e268846161f10082e80dc69eac2e90a - React-defaultsnativemodule: d635ef36d755321e5d6fc065bd166b2c5a0e9833 - React-domnativemodule: dd28f6d96cd21236e020be2eff6fe0b7d4ec3b66 - React-Fabric: 2e32c3fdbb1fbcf5fde54607e3abe453c6652ce2 - React-FabricComponents: 5ed0cdb81f6b91656cb4d3be432feaa28a58071a - React-FabricImage: 2bc714f818cb24e454f5d3961864373271b2faf8 - React-featureflags: 847642f41fa71ad4eec5e0351badebcad4fe6171 - React-featureflagsnativemodule: c868a544b2c626fa337bcbd364b1befe749f0d3f - React-graphics: 192ec701def5b3f2a07db2814dfba5a44986cff6 - React-hermes: e875778b496c86d07ab2ccaa36a9505d248a254b - React-idlecallbacksnativemodule: 4d57965cdf82c14ee3b337189836cd8491632b76 - React-ImageManager: bd0b99e370b13de82c9cd15f0f08144ff3de079e - React-jserrorhandler: a2fdef4cbcfdcdf3fa9f5d1f7190f7fd4535248d - React-jsi: 89d43d1e7d4d0663f8ba67e0b39eb4e4672c27de - React-jsiexecutor: abe4874aaab90dfee5dec480680220b2f8af07e3 - React-jsinspector: a0b3e051aef842b0b2be2353790ae2b2a5a65a8f - React-jsinspectorcdp: 6346013b2247c6263fbf5199adf4a8751e53bd89 - React-jsinspectornetwork: 26281aa50d49fc1ec93abf981d934698fa95714f - React-jsinspectortracing: 55eedf6d57540507570259a778663b90060bbd6e - React-jsitooling: 0e001113fa56d8498aa8ac28437ac0d36348e51a - React-jsitracing: b713793eb8a5bbc4d86a84e9d9e5023c0f58cbaf - React-logger: 50fdb9a8236da90c0b1072da5c32ee03aeb5bf28 - React-Mapbuffer: 9050ee10c19f4f7fca8963d0211b2854d624973e - React-microtasksnativemodule: f775db9e991c6f3b8ccbc02bfcde22770f96e23b - react-native-safe-area-context: 37e680fc4cace3c0030ee46e8987d24f5d3bdab2 - React-NativeModulesApple: 8969913947d5b576de4ed371a939455a8daf28aa + React-defaultsnativemodule: afc9d809ec75780f39464a6949c07987fbea488c + React-domnativemodule: 91a233260411d41f27f67aa1358b7f9f0bfd101d + React-Fabric: 21f349b5e93f305a3c38c885902683a9c79cf983 + React-FabricComponents: 47ac634cc9ecc64b30a9997192f510eebe4177e4 + React-FabricImage: 21873acd6d4a51a0b97c133141051c7acb11cc86 + React-featureflags: 653f469f0c3c9dc271d610373e3b6e66a9fd847d + React-featureflagsnativemodule: c91a8a3880e0f4838286402241ead47db43aed28 + React-graphics: b4bdb0f635b8048c652a5d2b73eb8b1ddd950f24 + React-hermes: fcfad3b917400f49026f3232561e039c9d1c34bf + React-idlecallbacksnativemodule: 8cb83207e39f8179ac1d344b6177c6ab3ccebcdc + React-ImageManager: 396128004783fc510e629124dce682d38d1088e7 + React-jserrorhandler: b58b788d788cdbf8bda7db74a88ebfcffc8a0795 + React-jsi: d2c3f8555175371c02da6dfe7ed1b64b55a9d6c0 + React-jsiexecutor: ba537434eb45ee018b590ed7d29ee233fddb8669 + React-jsinspector: f21b6654baf96cb9f71748844a32468a5f73ad51 + React-jsinspectorcdp: 3f8be4830694c3c1c39442e50f8db877966d43f0 + React-jsinspectornetwork: 70e41469565712ad60e11d9c8b8f999b9f7f61eb + React-jsinspectortracing: eccf9bfa4ec7f130d514f215cfb2222dc3c0e270 + React-jsitooling: b376a695f5a507627f7934748533b24eed1751ca + React-jsitracing: 5c8c3273dda2d95191cc0612fb5e71c4d9018d2a + React-logger: c3e2f8a2e284341205f61eef3d4677ab5a309dfd + React-Mapbuffer: 603c18db65844bb81dbe62fee8fcc976eaeb7108 + React-microtasksnativemodule: d77e0c426fce34c23227394c96ca1033b30c813c + react-native-safe-area-context: 53f796cb6c814661bbe99fbdfd0585d07b996cdd + React-NativeModulesApple: 1664340b8750d64e0ef3907c5e53d9481f74bcbd React-oscompat: ce47230ed20185e91de62d8c6d139ae61763d09c - React-perflogger: 02b010e665772c7dcb859d85d44c1bfc5ac7c0e4 - React-performancetimeline: 130db956b5a83aa4fb41ddf5ae68da89f3fb1526 + React-perflogger: b1af3cfb3f095f819b2814910000392a8e17ba9f + React-performancetimeline: f9ec65b77bcadbc7bd8b47a6f4b4b697da7b1490 React-RCTActionSheet: 0b14875b3963e9124a5a29a45bd1b22df8803916 - React-RCTAnimation: a7b90fd2af7bb9c084428867445a1481a8cb112e - React-RCTAppDelegate: 3262bedd01263f140ec62b7989f4355f57cec016 - React-RCTBlob: c17531368702f1ebed5d0ada75a7cf5915072a53 - React-RCTFabric: 6409edd8cfdc3133b6cc75636d3b858fdb1d11ea - React-RCTFBReactNativeSpec: c004b27b4fa3bd85878ad2cf53de3bbec85da797 - React-RCTImage: c68078a120d0123f4f07a5ac77bea3bb10242f32 - React-RCTLinking: cf8f9391fe7fe471f96da3a5f0435235eca18c5b - React-RCTNetwork: ca31f7c879355760c2d9832a06ee35f517938a20 - React-RCTRuntime: a6cf4a1e42754fc87f493e538f2ac6b820e45418 - React-RCTSettings: e0e140b2ff4bf86d34e9637f6316848fc00be035 - React-RCTText: 75915bace6f7877c03a840cc7b6c622fb62bfa6b - React-RCTVibration: 25f26b85e5e432bb3c256f8b384f9269e9529f25 + React-RCTAnimation: 60f6eca214a62b9673f64db6df3830cee902b5af + React-RCTAppDelegate: 37734b39bac108af30a0fd9d3e1149ec68b82c28 + React-RCTBlob: 83fbcbd57755caf021787324aac2fe9b028cc264 + React-RCTFabric: a05cb1df484008db3753c8b4a71e4c6d9f1e43a6 + React-RCTFBReactNativeSpec: d58d7ae9447020bbbac651e3b0674422aba18266 + React-RCTImage: 47aba3be7c6c64f956b7918ab933769602406aac + React-RCTLinking: 2dbaa4df2e4523f68baa07936bd8efdfa34d5f31 + React-RCTNetwork: 1fca7455f9dedf7de2b95bec438da06680f3b000 + React-RCTRuntime: 17819dd1dfc8613efaf4cbb9d8686baae4a83e5b + React-RCTSettings: 01bf91c856862354d3d2f642ccb82f3697a4284a + React-RCTText: cb576a3797dcb64933613c522296a07eaafc0461 + React-RCTVibration: 560af8c086741f3525b8456a482cdbe27f9d098e React-rendererconsistency: 2dac03f448ff337235fd5820b10f81633328870d - React-renderercss: 477da167bb96b5ac86d30c5d295412fb853f5453 - React-rendererdebug: 2a1798c6f3ef5f22d466df24c33653edbabb5b89 - React-RuntimeApple: 28cf4d8eb18432f6a21abbed7d801ab7f6b6f0b4 - React-RuntimeCore: 41bf0fd56a00de5660f222415af49879fa49c4f0 - React-runtimeexecutor: 1afb774dde3011348e8334be69d2f57a359ea43e - React-RuntimeHermes: f3b158ea40e8212b1a723a68b4315e7a495c5fc6 - React-runtimescheduler: 3e1e2bec7300bae512533107d8e54c6e5c63fe0f - React-timing: 6fa9883de2e41791e5dc4ec404e5e37f3f50e801 - React-utils: 6e2035b53d087927768649a11a26c4e092448e34 - ReactAppDependencyProvider: 1bcd3527ac0390a1c898c114f81ff954be35ed79 - ReactCodegen: 7d4593f7591f002d137fe40cef3f6c11f13c88cc - ReactCommon: 08810150b1206cc44aecf5f6ae19af32f29151a8 + React-renderercss: c5c6b7a15948dd28facca39a18ac269073718490 + React-rendererdebug: 3c9d5e1634273f5a24d84cc5669f290ce0bdc812 + React-RuntimeApple: 887637d1e12ea8262df7d32bc100467df2302613 + React-RuntimeCore: 91f779835dc4f8f84777fe5dd24f1a22f96454e4 + React-runtimeexecutor: 8bb6b738f37b0ada4a6269e6f8ab1133dea0285c + React-RuntimeHermes: 4cb93de9fa8b1cc753d200dbe61a01b9ec5f5562 + React-runtimescheduler: 83dc28f530bfbd2fce84ed13aa7feebdc24e5af7 + React-timing: 03c7217455d2bff459b27a3811be25796b600f47 + React-utils: 6d46795ae0444ec8a5d9a5f201157b286bf5250a + ReactAppDependencyProvider: c277c5b231881ad4f00cd59e3aa0671b99d7ebee + ReactCodegen: 4c44b74b77fc41ae25b9e2c7e9bd6e2bc772c23f + ReactCommon: e6e232202a447d353e5531f2be82f50f47cbaa9a ReactNativeDependencies: 71ce9c28beb282aa720ea7b46980fff9669f428a - RNCAsyncStorage: 3a4f5e2777dae1688b781a487923a08569e27fe4 - RNGestureHandler: e0d0bce5599f6120b7adf90c38d2805e2935795f - RNReanimated: e5c702a3e24cc1c68b2de67671713f35461678f4 - RNScreens: d8d6f1792f6e7ac12b0190d33d8d390efc0c1845 - RNSVG: 31d6639663c249b7d5abc9728dde2041eb2a3c34 - RNWorklets: 76fce72926e28e304afb44f0da23b2d24f2c1fa0 + RNCAsyncStorage: e85a99325df9eb0191a6ee2b2a842644c7eb29f4 + RNGestureHandler: 40c2d1c168e54715fe52e0fb16cb38c54611e4f3 + RNReanimated: 43f611f1c85c90e0273df7399bf1536f8e2bd125 + RNScreens: dd61bc3a3e6f6901ad833efa411917d44827cf51 + RNSVG: 2825ee146e0f6a16221e852299943e4cceef4528 + RNWorklets: 28ee7370ca8da356fcc914e3e68b97e9752196d2 Yoga: 5934998fbeaef7845dbf698f698518695ab4cd1a PODFILE CHECKSUM: c2c3838f0b2a579fef2350bff2ecaa005e27145d diff --git a/server/app/tasks/push.py b/server/app/tasks/push.py index c62ec15..136ca66 100644 --- a/server/app/tasks/push.py +++ b/server/app/tasks/push.py @@ -9,7 +9,7 @@ from zoneinfo import ZoneInfo import httpx from celery import current_app, shared_task -from sqlalchemy import select +from sqlalchemy import select, update from app.core.config import get_settings from app.db.models.push_preference import PushPreference @@ -167,16 +167,25 @@ async def _generate_schedule_once(*, now_utc: datetime, max_users: int = 5000) - created += 1 # 投递 ETA 发送任务 - current_app.send_task( - "tasks.push.send_scheduled", - kwargs={ - "client_user_id": pref.client_user_id, - "local_date": target.local_date.isoformat(), - "slot_index": int(idx), - }, - eta=dt_utc, - ) - scheduled += 1 + try: + current_app.send_task( + "tasks.push.send_scheduled", + kwargs={ + "client_user_id": pref.client_user_id, + "local_date": target.local_date.isoformat(), + "slot_index": int(idx), + }, + eta=dt_utc, + ) + scheduled += 1 + except Exception as e: + # 关键:如果投递失败(例如 broker 短暂不可用),不要让 log 永远卡在 scheduled + log.status = "failed" + log.error = f"enqueue_failed:{type(e).__name__}" + try: + await session.commit() + except Exception: + await session.rollback() return {"created": created, "scheduled": scheduled} @@ -209,6 +218,24 @@ async def _send_once_async(*, client_user_id: str, local_date: date, slot_index: return {"status": "noop", "reason": "no_log"} if str(log.status) == "sent": return {"status": "noop", "reason": "already_sent"} + if str(log.status) != "scheduled": + # 例如 failed/skipped/sending:不再重复尝试 + return {"status": "noop", "reason": f"not_scheduled:{log.status}"} + + # 原子抢占:避免同一条 scheduled 被重复发送(例如 ETA 任务丢失后被补偿重投递) + # 只有从 scheduled -> sending 抢占成功的任务才能继续执行。 + res = await session.execute( + update(PushSendLog) + .where( + PushSendLog.id == log.id, + PushSendLog.status == "scheduled", + ) + .values(status="sending", error=None) + ) + await session.commit() + if (res.rowcount or 0) <= 0: + return {"status": "noop", "reason": "already_in_progress_or_processed"} + log.status = "sending" # 2) 当前偏好检查(用户可能中途关闭/改次数) qpref = select(PushPreference).where(PushPreference.client_user_id == client_user_id) @@ -310,3 +337,46 @@ def send_scheduled(*, client_user_id: str, local_date: str, slot_index: int) -> d = date.fromisoformat(str(local_date)) return asyncio.run(_send_once_async(client_user_id=str(client_user_id), local_date=d, slot_index=int(slot_index))) + +@shared_task(name="tasks.push.requeue_overdue") +def requeue_overdue(*, grace_seconds: int = 300, limit: int = 200) -> dict[str, Any]: + """ + 补偿任务:扫描“已到时间但仍处于 scheduled”的记录并重新投递发送任务。 + + 目的: + - 覆盖 broker 短暂不可用、worker 重启、ETA 任务丢失等导致的“scheduled 卡住” + - 与 send_scheduled 内部的原子状态抢占配合,避免重复发送 + """ + + now_utc_naive = datetime.now(timezone.utc).replace(tzinfo=None) + cutoff = now_utc_naive - timedelta(seconds=int(grace_seconds)) + + async def _run() -> dict[str, Any]: + requeued = 0 + async with AsyncSessionLocal() as session: + q = ( + select(PushSendLog) + .where(PushSendLog.status == "scheduled", PushSendLog.scheduled_at <= cutoff) + .order_by(PushSendLog.scheduled_at.asc()) + .limit(int(limit)) + ) + rows = await session.execute(q) + logs = list(rows.scalars().all()) + for log in logs: + try: + current_app.send_task( + "tasks.push.send_scheduled", + kwargs={ + "client_user_id": str(log.client_user_id), + "local_date": str(log.local_date), + "slot_index": int(log.slot_index), + }, + ) + requeued += 1 + except Exception: + # 忽略单条投递失败,交给下一轮补偿 + continue + return {"status": "ok", "requeued": requeued, "cutoff": cutoff.isoformat()} + + return asyncio.run(_run()) + diff --git a/server/app/worker.py b/server/app/worker.py index 48632a5..2baadb1 100644 --- a/server/app/worker.py +++ b/server/app/worker.py @@ -57,6 +57,14 @@ celery_app.conf.beat_schedule = { "kwargs": {"max_users": 5000}, "options": {"queue": f"{prefix}:celery"}, } + , + # 补偿:每 5 分钟扫描一次 overdue scheduled 并重投递 + "push-requeue-overdue": { + "task": "tasks.push.requeue_overdue", + "schedule": crontab(minute="*/5"), + "kwargs": {"grace_seconds": 300, "limit": 200}, + "options": {"queue": f"{prefix}:celery"}, + }, } # 自动发现任务(约定:导入 app.tasks 触发其内部对子模块的显式导入) diff --git a/server/celerybeat-schedule b/server/celerybeat-schedule index 7eb93532d16cf63dc2660fe44e7f05d3f535842c..782ef756c27cc0104daa77af9f6914a9a388beb7 100644 GIT binary patch delta 250 zcmZojXh_(=CctIMz<-#3J^vkE%Z-Jayh1I-MJ!UCF{ybaMVYC^4J=b*CuhidO)ipE zn7mcik)4}C&5&z<=j6Y#fs9O({pB>7Win(YSIgC_b2@XezhdHM=4D`D2%nN6);1+* ziuc+KX^kFcEq%i&89;R)I9XBNS=&6rJOiShi<6CwV}lJ$Jp)KRqrsFOMiZ!x$^G(* zj4qQm$_q<5GYc4$Q~{mD4zvOUdYD5)oTun1xo*BE|BGLvh@V-Bv9u&PJ~b~fDJM0> ag^gK&v82iwBpe@KmReMtnV%OQ?+O6^oky<# delta 249 zcmZojXh_(=CcqWOz<-#3J^vlvu#JUoyh1Hub}UkzN~w7zMVYC^4J=a~CVR_zF=a4L z-XiP7&dJVV%2gvc`LApsBg15WIZbBi4C%?$a`oyQ&Rp!Tm^it_85kIfreuh=O$nOf z&6**l(Zj5zZ#X3bs15`tE6O`-n`M|~z|;#d@mM&()H8t8Ga5|kVKjm2nA|U~$Y?cr zqr9+`C9{A*NfppV>_96(pocj$#CeLIlJ(|$^1t{s?D(0L7)wi%<5TkzlX6m1tk{?Z W7)z=wLBjFzWvNBQnfZC~@zwym%|tB# diff --git a/server/celerybeat-schedule-shm b/server/celerybeat-schedule-shm deleted file mode 100644 index 8247f6cda01b4b87c44e24535c84436d541f99bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI)J4!=Q5C-5s@ez%$#AtFAdqEJ~gsqT0qz?hN;Vx{lffRO@*@jCn2zGj|NU*ig z+k6AV42Q#+!?%E`UanKeLCIFqJ1=#kMQDZKYqmb@w&82SI_2LEI1ar9U2Ak*TSe!{^$fq6Y7)#Dq^srA%+AiFA_Xw`|!1- z?`fJi-&9tfobP%2oO4p_U!Q0FGj-1@u?s5{rAcwWE^VL8rC({E+4v4gvJ^*D)uTXr7_#cnE(-W!M8a4MfOEN#FYd?GB*3A8)=3elt*g!7eql0J)9N?x=U?3rdz{q&JCL}7bm6*EpHW>^qRJ5kJ~Fs zQnE_XQ}tD8C`p8u%Zr+K^rgiK)atEmcCh_{2a6-Te3aK5)iUp@X{kYBq}5bbXhvb! zkt5T)_)FQ#qBN7;n;z7<^C!rvbTD1a5$3}(&VkzigPc-o4bS2B?T*` z3PT&niu941o$Z$SBq8zRAI!1o41cU`b4U>$nMJ?wj{;88i1%kl!f-`m~QpFH~S|K$aW zX@SVwb85;A1_1;RKmY**5I_I{1Q3|>0^|kA3(Q_#VB-wt1t#vf@4XFwoY+oYV9wuU z7$5=&Ab+Xp9-J8$IA=2YYVt*3_y(l z0tg_000IagfB*srAaFAR5I_I{1Q0*~0R#|OXac^F zfUmgeiv0*~G%pZsefU#$3X z`H^^4t}-y^@&Y|GxF5mf@IMb9J^sc8@&dPe51>8*2q1s}0tg_000IagfB*usA>a!M z_=;D_3-nxXKZ3m2MeIISE#n(7-`E$^HT-rXFOTW@S`S9Tvl|FGF5Sr!KjXP7iNEfoASGG0cj5}?5 zz>Zp)IcUb+cH&+;YOx))(oREKwr*vHgkx8V<4#Yw{^Fu=sIIQz%_H)efkGy0Wen4? z>-Pyuv#h-A!)`c~GepMNo0G+-WwFmK%HtumU<_wcgIVDmb9Oj(aQChrClPSV?jsSf zo64j2#^E-c%I6GA8*m4o2qzRf(C+9f^_7;aG3pH5KPuZD(hjNxQ+~YdY&+g!$|JS= z3!)&09!`q`-K91i)2(4Q=Z4Lgixbm@mbZ#bdQIE3$L$p*DOn}%o~Zh&G!!L5;pOrL znRoQ1#R=5vt!;L&{ecIIBfNZ+qt0F3kKm@(7r2GIz>`Dk{{Gc9-{>PRP~CSZW`_U* z2q1s}0tg_000IagP%Q$!kbtlFxV!N{!AhyZ&<3(1eUgUFuQ$c*EzsfEfpz6%LM1&R(-QUK z;BY1{WP0MQ*NQ2LLcIA-=LN#AUb^@EOr zSb6WvhZ=c-oBf^Vd;}0c009ILKmY**5I_I{1n!1_FC^eAZoS34z|`t@$4-BK;=AMp z?#8vGPXrJ^009ILKmY**5U3u3v1Ee0z&yzdELW5lr@Xwt@`aukczxn;tM)% Date: Wed, 11 Feb 2026 13:50:02 +0800 Subject: [PATCH 10/19] =?UTF-8?q?fix:=E6=9B=B4=E6=96=B0=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1push?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/constants/env.ts | 2 +- server/app/tasks/push.py | 129 ++++++++++++++++++--------------- server/app/tasks/reco.py | 39 ++++++++++ server/celerybeat-schedule-shm | Bin 0 -> 32768 bytes server/celerybeat-schedule-wal | Bin 0 -> 238992 bytes 5 files changed, 112 insertions(+), 58 deletions(-) create mode 100644 server/celerybeat-schedule-shm create mode 100644 server/celerybeat-schedule-wal diff --git a/client/src/constants/env.ts b/client/src/constants/env.ts index b069af3..fc73f15 100644 --- a/client/src/constants/env.ts +++ b/client/src/constants/env.ts @@ -46,7 +46,7 @@ function getApiBaseUrl(env: AppRuntimeEnv): string { return getOptionalEnv('EXPO_PUBLIC_API_BASE_URL_PROD', getOptionalEnv('EXPO_PUBLIC_API_BASE_URL_LOCAL', 'https://api.damer.fun')); } -export const API_BASE_URL = getApiBaseUrl(APP_ENV); +export const API_BASE_URL = getApiBaseUrl(APPpai qa /** * 调试:打印环境变量注入结果(仅开发环境) diff --git a/server/app/tasks/push.py b/server/app/tasks/push.py index 136ca66..a9872dd 100644 --- a/server/app/tasks/push.py +++ b/server/app/tasks/push.py @@ -218,17 +218,27 @@ async def _send_once_async(*, client_user_id: str, local_date: date, slot_index: return {"status": "noop", "reason": "no_log"} if str(log.status) == "sent": return {"status": "noop", "reason": "already_sent"} - if str(log.status) != "scheduled": - # 例如 failed/skipped/sending:不再重复尝试 - return {"status": "noop", "reason": f"not_scheduled:{log.status}"} + if str(log.status) not in ("scheduled", "sending"): + # 例如 failed/skipped:不再重复尝试 + return {"status": "noop", "reason": f"not_retryable:{log.status}"} - # 原子抢占:避免同一条 scheduled 被重复发送(例如 ETA 任务丢失后被补偿重投递) - # 只有从 scheduled -> sending 抢占成功的任务才能继续执行。 + # 原子抢占:避免重复发送 + # - scheduled:正常抢占 scheduled -> sending + # - sending:如果长时间卡在 sending(进程崩溃/网络异常等),允许“超时接管”继续执行 + now_utc_naive = datetime.now(timezone.utc).replace(tzinfo=None) + steal_cutoff = now_utc_naive - timedelta(minutes=10) res = await session.execute( update(PushSendLog) .where( PushSendLog.id == log.id, - PushSendLog.status == "scheduled", + ( + (PushSendLog.status == "scheduled") + | ( + (PushSendLog.status == "sending") + & (PushSendLog.sent_at.is_(None)) + & (PushSendLog.scheduled_at <= steal_cutoff) + ) + ), ) .values(status="sending", error=None) ) @@ -262,71 +272,72 @@ async def _send_once_async(*, client_user_id: str, local_date: date, slot_index: await session.commit() return {"status": "failed", "reason": "no_active_token"} - # 4) 生成文案(复用推荐模块 push 场景) - reco_locale = str(normalize_locale(_pick_reco_locale(pref.locale))) - title = _pick_title(reco_locale) - - if pref.user_profile_json: - user_profile = UserProfileV1_2.model_validate(pref.user_profile_json) - else: - # 无画像:用“全跳过”的默认画像(降个性化/降风险) - user_profile = UserProfileV1_2.model_validate( - build_user_profile_from_questionnaire(QuestionnaireAnswersV1_2()).model_dump() - ) - - # 直接复用 reco 的 Celery 任务实现(同步函数) - from app.tasks.reco import generate as reco_generate - - reco_payload = reco_generate(scene="push", user_profile=user_profile.model_dump(), k=1, locale=reco_locale) - body = "" try: - items = (reco_payload or {}).get("items") or [] - if items and isinstance(items, list): - body = str(items[0].get("text") or "").strip() - except Exception: + # 4) 生成文案(复用推荐模块 push 场景) + reco_locale = str(normalize_locale(_pick_reco_locale(pref.locale))) + title = _pick_title(reco_locale) + + if pref.user_profile_json: + user_profile = UserProfileV1_2.model_validate(pref.user_profile_json) + else: + # 无画像:用“全跳过”的默认画像(降个性化/降风险) + user_profile = UserProfileV1_2.model_validate( + build_user_profile_from_questionnaire(QuestionnaireAnswersV1_2()).model_dump() + ) + + # 关键:这里不能调用 tasks.reco.generate(内部会 asyncio.run),否则会嵌套事件循环崩溃。 + from app.tasks.reco import run_reco_payload_async + body = "" + try: + reco_payload = await run_reco_payload_async(scene="push", user_profile=user_profile, k=1, locale=reco_locale) + items = (reco_payload or {}).get("items") or [] + if items and isinstance(items, list): + body = str(items[0].get("text") or "").strip() + except Exception: + body = "" - if not body: - body = "给自己一句温柔的话。" + if not body: + body = "给自己一句温柔的话。" - # 5) 发送 - try: + # 5) 发送 expo_res = await _send_expo_push( to=str(token.push_token), title=title, body=body, data={"client_user_id": client_user_id, "scene": "push"}, ) + + # 6) 解析 Expo 回执,必要时停用 token + try: + data_list = (expo_res or {}).get("data") or [] + if data_list and isinstance(data_list, list): + first = data_list[0] or {} + if first.get("status") == "error": + details = first.get("details") or {} + err = str(details.get("error") or first.get("message") or "expo_error") + log.status = "failed" + log.error = err + if "DeviceNotRegistered" in err: + token.is_active = False + await session.commit() + return {"status": "failed", "expo": expo_res} + except Exception: + # 忽略解析异常,继续按成功处理 + pass + + log.status = "sent" + log.sent_at = datetime.now(timezone.utc).replace(tzinfo=None) + log.error = None + await session.commit() + return {"status": "sent", "expo": expo_res} except Exception as e: + # 兜底:任何未预期异常都不要让状态卡在 sending log.status = "failed" - log.error = f"send_failed:{type(e).__name__}" + log.error = f"unexpected:{type(e).__name__}" await session.commit() return {"status": "failed", "error": str(e)} - # 6) 解析 Expo 回执,必要时停用 token - try: - data_list = (expo_res or {}).get("data") or [] - if data_list and isinstance(data_list, list): - first = data_list[0] or {} - if first.get("status") == "error": - details = first.get("details") or {} - err = str(details.get("error") or first.get("message") or "expo_error") - log.status = "failed" - log.error = err - if "DeviceNotRegistered" in err: - token.is_active = False - await session.commit() - return {"status": "failed", "expo": expo_res} - except Exception: - # 忽略解析异常,继续按成功处理 - pass - - log.status = "sent" - log.sent_at = datetime.now(timezone.utc).replace(tzinfo=None) - log.error = None - await session.commit() - return {"status": "sent", "expo": expo_res} - @shared_task(name="tasks.push.send_scheduled") def send_scheduled(*, client_user_id: str, local_date: str, slot_index: int) -> dict[str, Any]: @@ -356,7 +367,11 @@ def requeue_overdue(*, grace_seconds: int = 300, limit: int = 200) -> dict[str, async with AsyncSessionLocal() as session: q = ( select(PushSendLog) - .where(PushSendLog.status == "scheduled", PushSendLog.scheduled_at <= cutoff) + .where( + PushSendLog.status.in_(("scheduled", "sending")), + PushSendLog.sent_at.is_(None), + PushSendLog.scheduled_at <= cutoff, + ) .order_by(PushSendLog.scheduled_at.asc()) .limit(int(limit)) ) diff --git a/server/app/tasks/reco.py b/server/app/tasks/reco.py index 0e34fc2..2c2fcfa 100644 --- a/server/app/tasks/reco.py +++ b/server/app/tasks/reco.py @@ -53,6 +53,45 @@ async def _run_reco_async( ) +async def run_reco_payload_async( + *, + scene: Scene, + user_profile: UserProfileV1_2, + already_recommended_ids: Optional[list[Any]] = None, + touched_or_viewed_ids: Optional[list[Any]] = None, + k: Optional[int] = None, + now: Optional[datetime] = None, + locale: Optional[str] = None, +) -> dict[str, Any]: + """ + 在“已有事件循环”内运行推荐并返回 payload。 + + 用途: + - 供 Push 等 async 任务内部调用,避免 `asyncio.run()` 嵌套导致 RuntimeError + - 也便于未来在 API/任务间复用 + """ + + effective_now = _ensure_now(now) + effective_locale = _ensure_locale(locale) + + # k 默认按场景(与 generate 保持一致) + if k is None: + k_i = 30 if scene == "feed" else 1 + else: + k_i = int(k) + + result = await _run_reco_async( + scene=scene, + user_profile=user_profile, + already_recommended_ids=list(already_recommended_ids or []), + touched_or_viewed_ids=list(touched_or_viewed_ids or []), + k=int(k_i), + now=effective_now, + locale=effective_locale, + ) + return result.model_dump() + + def _run_reco_sync( *, scene: Scene, diff --git a/server/celerybeat-schedule-shm b/server/celerybeat-schedule-shm new file mode 100644 index 0000000000000000000000000000000000000000..a285d7b33d522575ca6b79176a80401bb108e9b9 GIT binary patch literal 32768 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 Date: Thu, 12 Feb 2026 13:54:34 +0800 Subject: [PATCH 11/19] =?UTF-8?q?fix:=E6=AF=8F=E6=97=A5=E6=8E=A8=E8=8D=90?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0003_add_push_send_log_payload.py | 31 ++++++++++ server/app/api/v1/push.py | 33 +++++++++- server/app/db/models/push_send_log.py | 7 ++- server/app/tasks/push.py | 58 ++++++++++++++++-- server/celerybeat-schedule | Bin 12288 -> 12288 bytes server/celerybeat-schedule-shm | Bin 32768 -> 32768 bytes server/celerybeat-schedule-wal | Bin 238992 -> 675712 bytes 7 files changed, 121 insertions(+), 8 deletions(-) create mode 100644 server/alembic/versions/0003_add_push_send_log_payload.py diff --git a/server/alembic/versions/0003_add_push_send_log_payload.py b/server/alembic/versions/0003_add_push_send_log_payload.py new file mode 100644 index 0000000..2c8f747 --- /dev/null +++ b/server/alembic/versions/0003_add_push_send_log_payload.py @@ -0,0 +1,31 @@ +"""add push_send_log payload snapshot + +Revision ID: 0003_add_push_send_log_payload +Revises: 0002_init_push_tables +Create Date: 2026-02-12 + +""" + +from __future__ import annotations + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = "0003_add_push_send_log_payload" +down_revision = "0002_init_push_tables" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.add_column("push_send_log", sa.Column("content_id", sa.Integer(), nullable=True, comment="推送文案内容 ID(可选)")) + op.add_column("push_send_log", sa.Column("title", sa.String(length=128), nullable=True, comment="推送标题(可选)")) + op.add_column("push_send_log", sa.Column("body", sa.Text(), nullable=True, comment="推送正文(可选)")) + + +def downgrade() -> None: + op.drop_column("push_send_log", "body") + op.drop_column("push_send_log", "title") + op.drop_column("push_send_log", "content_id") + diff --git a/server/app/api/v1/push.py b/server/app/api/v1/push.py index 266caf2..3a14821 100644 --- a/server/app/api/v1/push.py +++ b/server/app/api/v1/push.py @@ -153,6 +153,32 @@ async def register(req: PushRegisterRequest, db: AsyncSession = Depends(get_db)) token.is_active = True token.last_seen_at = _ensure_utc(now) + # 额外:尽早写入/补齐时区与语言(用于按用户时区生成排程) + # 说明: + # - 用户首次授权后会立即调用 /register,但不一定马上进入“每日提醒”确认页 + # - 若 push_preferences 里 timezone 为空,会导致排程回退到 UTC,体验不符合预期 + if req.device_meta: + tz = (req.device_meta.timezone or "").strip() or None + loc = (req.device_meta.locale or "").strip() or None + if tz or loc: + qpref = select(PushPreference).where(PushPreference.client_user_id == req.client_user_id) + rpref = await db.execute(qpref) + pref = rpref.scalar_one_or_none() + if pref is None: + pref = PushPreference( + client_user_id=req.client_user_id, + enabled=False, + times_per_day=0, + timezone=tz, + locale=loc, + ) + db.add(pref) + else: + if tz and not (pref.timezone or "").strip(): + pref.timezone = tz + if loc and not (pref.locale or "").strip(): + pref.locale = loc + await db.commit() return {"status": "ok"} @@ -187,8 +213,11 @@ async def put_preferences(req: PushPreferencesRequest, db: AsyncSession = Depend else: pref.enabled = enabled pref.times_per_day = times - pref.timezone = req.timezone - pref.locale = req.locale + # 注意:只在客户端显式传入时覆盖,避免把已保存的 timezone/locale 清空导致排程回退到 UTC + if req.timezone is not None: + pref.timezone = req.timezone + if req.locale is not None: + pref.locale = req.locale if req.user_profile is not None: pref.user_profile_json = req.user_profile.model_dump(mode="json") diff --git a/server/app/db/models/push_send_log.py b/server/app/db/models/push_send_log.py index b340ba7..3449343 100644 --- a/server/app/db/models/push_send_log.py +++ b/server/app/db/models/push_send_log.py @@ -2,7 +2,7 @@ from __future__ import annotations from datetime import date, datetime -from sqlalchemy import Date, DateTime, Index, SmallInteger, String, Text, UniqueConstraint, func +from sqlalchemy import Date, DateTime, Index, Integer, SmallInteger, String, Text, UniqueConstraint, func from sqlalchemy.orm import Mapped, mapped_column from app.db.base import Base @@ -33,5 +33,10 @@ class PushSendLog(Base): status: Mapped[str] = mapped_column(String(length=16), nullable=False, server_default="scheduled", comment="scheduled/sent/failed") error: Mapped[str | None] = mapped_column(Text, nullable=True, comment="失败原因(可选)") + # 发送内容快照(用于观测 + 去重) + content_id: Mapped[int | None] = mapped_column(Integer, nullable=True, comment="推送文案内容 ID(可选)") + title: Mapped[str | None] = mapped_column(String(length=128), nullable=True, comment="推送标题(可选)") + body: Mapped[str | None] = mapped_column(Text, nullable=True, comment="推送正文(可选)") + created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.now(), comment="创建时间") diff --git a/server/app/tasks/push.py b/server/app/tasks/push.py index a9872dd..6d1f69f 100644 --- a/server/app/tasks/push.py +++ b/server/app/tasks/push.py @@ -44,7 +44,8 @@ def _pick_reco_locale(pref_locale: Optional[str]) -> str: def _pick_title(locale: str) -> str: - return "每日提醒" if str(locale) == "tc" else "Daily Reminder" + # 需求:tc 语言使用繁体标题 + return "每日推薦" if str(locale) == "tc" else "Daily Reminder" async def _send_expo_push(*, to: str, title: str, body: str, data: Optional[dict[str, Any]] = None) -> dict[str, Any]: @@ -288,17 +289,61 @@ async def _send_once_async(*, client_user_id: str, local_date: date, slot_index: # 关键:这里不能调用 tasks.reco.generate(内部会 asyncio.run),否则会嵌套事件循环崩溃。 from app.tasks.reco import run_reco_payload_async - body = "" + # 去重:同一用户同一天尽量不重复推送相同 content + used_ids: list[int] = [] try: - reco_payload = await run_reco_payload_async(scene="push", user_profile=user_profile, k=1, locale=reco_locale) + qused = ( + select(PushSendLog.content_id) + .where( + PushSendLog.client_user_id == client_user_id, + PushSendLog.local_date == local_date, + PushSendLog.content_id.is_not(None), + PushSendLog.id != log.id, + ) + .order_by(PushSendLog.slot_index.asc()) + ) + rused = await session.execute(qused) + used_ids = [int(x) for x in rused.scalars().all() if x is not None] + except Exception: + used_ids = [] + + body = "" + picked_content_id: int | None = None + try: + reco_payload = await run_reco_payload_async( + scene="push", + user_profile=user_profile, + k=3, + locale=reco_locale, + already_recommended_ids=used_ids, + ) items = (reco_payload or {}).get("items") or [] if items and isinstance(items, list): - body = str(items[0].get("text") or "").strip() + for it in items: + if not isinstance(it, dict): + continue + cid = it.get("content_id") + txt = str(it.get("text") or "").strip() + if not txt: + continue + if cid is not None: + try: + cid_i = int(cid) + except Exception: + cid_i = None + else: + cid_i = None + if cid_i is not None and cid_i in used_ids: + continue + picked_content_id = cid_i + body = txt + break except Exception: body = "" if not body: - body = "给自己一句温柔的话。" + # tc 语言兜底文案使用繁体 + body = "給自己一句溫柔的話。" if reco_locale == "tc" else "给自己一句温柔的话。" # 5) 发送 expo_res = await _send_expo_push( @@ -329,6 +374,9 @@ async def _send_once_async(*, client_user_id: str, local_date: date, slot_index: log.status = "sent" log.sent_at = datetime.now(timezone.utc).replace(tzinfo=None) log.error = None + log.title = title + log.body = body + log.content_id = picked_content_id await session.commit() return {"status": "sent", "expo": expo_res} except Exception as e: diff --git a/server/celerybeat-schedule b/server/celerybeat-schedule index 782ef756c27cc0104daa77af9f6914a9a388beb7..df15f253a3b26e777fa9966fc3d13075d2d45aa5 100644 GIT binary patch delta 405 zcmZojXh_(=D!|Q?#=w7=e?9*lp0tgHVLT#ju8o2$QoRhRc_l@esl^Q}Q}vlQ`^au( zvF zl_VBt7wdtv=|Q!{!?kfbbFsf-;$}5sU|^1iStOVttCo?y*WQzBR(#hKL7Dhc{$*DQ1MU{F? zG{kv|o>JxHd-57wXBhZD@Sov-$$xXRpu$Fedj@W1DMm=p@i0p}|Qch}01sk&fV@XvxNH{(o7;43t`FZj2l>mtnguDO% delta 221 zcmZojXh_(=D!|Qa$-sY@e?9*lUdxSzn!Lg-#YHSqoiV9-B}JL3#SJV|W0^Kr$!ulh zXXa&KUtpk7GNx?as~;<$CsrR6=&w>#mBn>04@eVi2wiq diff --git a/server/celerybeat-schedule-shm b/server/celerybeat-schedule-shm index a285d7b33d522575ca6b79176a80401bb108e9b9..9fb6ee4066f412ab78904a1390fac25db623002d 100644 GIT binary patch delta 381 zcmb7=IWt3X6vcme3QDEQC!kR%Vh)nki>h05c~7&YmiSMqf=|8)fyjw z(HS%RlTm2>=A5}RckY}sb5&JRRY^&E$s|sLumMsdVkQZDlCvCM|6TCO`WCu>eDFPg zq&tZPGX8rnq7uY&zyI*N)|7WG97`xA>N32V^e?kf&LNKiiYUfR8Rb+`O)d2_(o8FD z*yyC2UhE7ogp89>#&I*rG_%a%#gD=w0ajQg#0FdJprLcX5ht8+!4=osM%@ORq<>nB zaxVE4VxojnEL2cM4RzuxO|)R8oesL_p^ttB8OFf~W4M@LiWxl2<6{ApC6)=Y#yXp9 Wv&$a)9CFMl=UfuzhKQ)NXa4{-BWywd delta 165 zcmZo@U}|V!s+V}A%K!qhK+MR%AYcWgnSppms#M*nmF(&Q1^@Q<-H+x~dmof}K6^?& vsp^47fdR?a!ZETl2#! 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 V5I_I{1Q0N%KoY&cANT16{vSA43m^ah literal 238992 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 Date: Fri, 13 Feb 2026 22:46:01 +0800 Subject: [PATCH 12/19] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/app/worker.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/app/worker.py b/server/app/worker.py index 2baadb1..666f346 100644 --- a/server/app/worker.py +++ b/server/app/worker.py @@ -53,7 +53,8 @@ celery_app.conf.beat_schedule = { }, "push-generate-daily-schedule": { "task": "tasks.push.generate_daily_schedule", - "schedule": crontab(minute=10, hour=0), + # 由“每天一次”调整为“每 2 小时一次”(UTC) + "schedule": crontab(minute=10, hour="*/2"), "kwargs": {"max_users": 5000}, "options": {"queue": f"{prefix}:celery"}, } -- 2.49.1 From 4838bcef4bc9b26227281d4bbe502cbad6910487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=96=B0=E9=9B=A8?= Date: Tue, 24 Feb 2026 10:44:36 +0800 Subject: [PATCH 13/19] =?UTF-8?q?fix:=E6=9B=B4=E6=96=B0=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../images/home/Profile/widget/Widget2_en.png | Bin 14535 -> 13507 bytes .../images/home/Profile/widget/Widget2_tw.png | Bin 12298 -> 14024 bytes .../Profile/widget/Widget_description1_en.png | Bin 32692 -> 30913 bytes .../Profile/widget/Widget_description1_tw.png | Bin 29859 -> 31283 bytes .../Profile/widget/Widget_description2_en.png | Bin 46621 -> 44972 bytes .../Profile/widget/Widget_description2_tw.png | Bin 43090 -> 44452 bytes .../App-Icon-1024x1024@1x.png | Bin 144904 -> 145978 bytes server/app/tasks/push.py | 27 ++++++++++++++---- 8 files changed, 21 insertions(+), 6 deletions(-) diff --git a/client/assets/images/home/Profile/widget/Widget2_en.png b/client/assets/images/home/Profile/widget/Widget2_en.png index c04db52ab38ca34187f1036192dd65527f8574ba..81eafe549fa5f7cb50686d38908ccd3127fa5ab7 100644 GIT binary patch literal 13507 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 AHUIzs literal 14535 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 literal 12298 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 diff --git a/client/assets/images/home/Profile/widget/Widget_description1_en.png b/client/assets/images/home/Profile/widget/Widget_description1_en.png index 7ee26cad969690f319fa551c8501f99a55633217..51f20e59dd8f9691140d71c9c87cf7d851df3b3b 100644 GIT binary patch literal 30913 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

5&C>BQy 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 literal 29859 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 diff --git a/client/assets/images/home/Profile/widget/Widget_description2_en.png b/client/assets/images/home/Profile/widget/Widget_description2_en.png index 64a16256674464c5d53b625758da996cef8ff662..bf686ae5ab7840fd24595175e2c1f6ed8ddf3e0b 100644 GIT binary patch literal 44972 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∨KMX6oPpoH9Et$jpUvxrIIuEk}Gi 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 z zt23J%#d#nM0}^~fs5wTjkg^D8V3n;E7QM*1*Re;7OttjX#)rag@*>HDwaia+*sad)()+;H2tRNoM{T9>b(L4t zj&vp}06k;mgdd9(jG>Zj)$Yv2lH!kJS3WD1%s77>wLalw{ywvk+}KRR#st{eg{9dk z#fD1x>^&~rc@Gmfh?qRfk7;H)yVo{AZ#eDPOWR@sc{;wcnwg>}yyV8TCg!GRG(F>x zoN;WaPKq+6Gmw`qyQMr@?jGB<&^a?$!K;wa6Tr@HELuIOSw-}`Q0t&4B`4f`qMo35 zz>ZKabt6<)O5wE;&PY=X`ij=zOQ}r{{&M+lz7MK}fl zDl@z<8q9>AgWJg~B5FjImY!IJ%Yuho45TOggs`x)r=O5hIv?Lo0S_-sTus5^b9gmh zJ8>f=507~7Bek9>G-pn4aj=q=cmUWK+jXUo-MJJ z`)*3#o~Kj(TQ5~nq$dOnG(1Ppa(bpu?iCarp0l5x!KG2tG?|aaA)ivybGx1m%6dTy z9Bxv*2no2~zf z6M(hd^<+D(lZ#$@3Z(n6dKM}rpQ!i*$Q{+wLb1$`R3+c>J`upqJ9TkA+dG#=*uF}<^x?UC%b(?J1lF5z(~}SBxq7CjF?4zsS3Rj|`BYq(wt2NohEjUg zA#&{uHvrJHRUPRG0ikCXnpk=Y5j`=nj}f3m#L#}}iN0rg8oTk*^8h>X4T|)nlJqR4 z5QH)KxmK7uUC*En+!IJo0r?u)?HnOMV{Tq1m!7-f(-W$Sp#~I1dbU&u$2!1> z=_%iy=P#ybz`*7Kf%FXO*<6dFb2S^2`3C#%Mxu~<5r)M=oSL2@XhFrT2H%pN@D3^_r02MLV!=KxCg??5N_v8ro<2J;(e%v4R}3LNMbH|g zre~-I)bn<%8Bb3mvLqT;P@lsPdhWF*swacngZBYiiJa6SJ$Y3w$2X?u8Jp|z^fbOl zPkeMfN6LLx)8{Szl3$8k`CbiE${0IdIJ7|OV%?+o#>}4n%7MIti9qcNl)Y1dfIML zT+gj1=OiK&ZbDCtP9r_R7<%UQTS(6$dvyho5TBFR(;N)?sgE~s^Es@RFM;&5-q#b! zih8b|j@vh;XF+~8T!l+mqEA0P5u#{vVz$fGYyzz3i!J0tFB}X{TkyQe-Hn)@xs(C% zisqD^GRe<-DkdZ(NY@jljbNr9pP}&FEavOkbXZf0ZeeH}k?=Dzkv}Uv9a?`q^Q0}K zqM#<}+2a48zn=YF?Dz4xd09fuNwJzQ7cVc{&BdG7Jw1bQ`R{*w?&|t2LC@>l9!k&Y n>lsha&1Sn@ESB@t5N7@l1-yAIke=&w00000NkvXXu0mjfg39E0 literal 46621 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

p&w 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�n|p4QX-F(DX8 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 KutuE+vHt@b8aD0# literal 43090 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

hNaZhGw#PH+q|38>IXB9!x?sXO368uSHmhJCi% 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 delta 126043 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

rmNFh?KbB+-p*{gTw@q#kcV@N>a{U*~w$dDn1_ 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 Mdd9k+b?hVl2a}W3i2wiq diff --git a/server/app/tasks/push.py b/server/app/tasks/push.py index 6d1f69f..d902caa 100644 --- a/server/app/tasks/push.py +++ b/server/app/tasks/push.py @@ -68,7 +68,11 @@ async def _send_expo_push(*, to: str, title: str, body: str, data: Optional[dict def _uniform_jitter_times(*, start: datetime, end: datetime, n: int) -> list[datetime]: """ - 将窗口均匀切分为 n 个区间,并在每段内随机取一个时间点(抖动)。 + 将窗口均匀切分为 n 个区间,并在每段内取“中点 + 受限抖动”的时间点。 + + 目的: + - 尽量均匀分布(避免相邻两条推送随机到非常接近的时间) + - 仍保留一定随机性,避免过于机械 """ if n <= 0: @@ -85,8 +89,15 @@ def _uniform_jitter_times(*, start: datetime, end: datetime, n: int) -> list[dat if seg <= 0: out.append(seg_start) continue - jitter = random.random() * seg - out.append(seg_start + timedelta(seconds=jitter)) + + # 受限抖动:在每段的 [25%, 75%] 区间内取点 + # 这样相邻两段的最小间隔为 50% 段长,能显著减少“随机挤在一起”。 + mid = seg_start + timedelta(seconds=seg * 0.5) + jitter = (random.random() - 0.5) * (seg * 0.5) # [-0.25*seg, +0.25*seg] + out.append(mid + timedelta(seconds=jitter)) + + # 保序(理论上天然有序,这里再保险) + out.sort() return out @@ -289,18 +300,22 @@ async def _send_once_async(*, client_user_id: str, local_date: date, slot_index: # 关键:这里不能调用 tasks.reco.generate(内部会 asyncio.run),否则会嵌套事件循环崩溃。 from app.tasks.reco import run_reco_payload_async - # 去重:同一用户同一天尽量不重复推送相同 content + # 去重:用户推送过的内容尽量不再推送 + # 说明: + # - 依赖 push_send_log.content_id(需先完成对应 DB 迁移) + # - 为避免历史过长导致 already_recommended_ids 过大,这里取“最近若干条已推送内容”近似全量去重 used_ids: list[int] = [] try: qused = ( select(PushSendLog.content_id) .where( PushSendLog.client_user_id == client_user_id, - PushSendLog.local_date == local_date, PushSendLog.content_id.is_not(None), PushSendLog.id != log.id, ) - .order_by(PushSendLog.slot_index.asc()) + # 优先排除最近发送过的内容 + .order_by(PushSendLog.local_date.desc(), PushSendLog.slot_index.desc()) + .limit(5000) ) rused = await session.execute(qused) used_ids = [int(x) for x in rused.scalars().all() if x is not None] -- 2.49.1 From 9d6829ecebd2157e67f4f9d0bf6947c17ddf5e07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=96=B0=E9=9B=A8?= Date: Tue, 24 Feb 2026 10:51:32 +0800 Subject: [PATCH 14/19] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/constants/env.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/constants/env.ts b/client/src/constants/env.ts index fc73f15..b069af3 100644 --- a/client/src/constants/env.ts +++ b/client/src/constants/env.ts @@ -46,7 +46,7 @@ function getApiBaseUrl(env: AppRuntimeEnv): string { return getOptionalEnv('EXPO_PUBLIC_API_BASE_URL_PROD', getOptionalEnv('EXPO_PUBLIC_API_BASE_URL_LOCAL', 'https://api.damer.fun')); } -export const API_BASE_URL = getApiBaseUrl(APPpai qa +export const API_BASE_URL = getApiBaseUrl(APP_ENV); /** * 调试:打印环境变量注入结果(仅开发环境) -- 2.49.1 From 7fcc64f6e329c4ff4c2216389bf95ec7f2d0b970 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=96=B0=E9=9B=A8?= Date: Wed, 25 Feb 2026 17:13:29 +0800 Subject: [PATCH 15/19] =?UTF-8?q?fix:=E6=9B=B4=E6=96=B0=E6=8A=80=E6=9C=AF?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=BD=91=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/app/api/v1/legal.py | 61 ++++++++++++++++++++++++++++++++++++++ spec_kit/overview.md | 1 + 2 files changed, 62 insertions(+) diff --git a/server/app/api/v1/legal.py b/server/app/api/v1/legal.py index 08ef3ed..0a16e2c 100644 --- a/server/app/api/v1/legal.py +++ b/server/app/api/v1/legal.py @@ -14,6 +14,53 @@ router = APIRouter(prefix="/v1/legal", tags=["legal"]) INTERNAL_SENTINEL = "__internal__" +# 技术支持页文案(EN / TC) +SUPPORT_MD = """Dear Mama | Technical Support +Last updated: February 2026 + +If you need technical support for Dear Mama, please contact us: +- Support email: leitinglan@project-c.org + +Support scope (including but not limited to): +- App installation or update issues +- App crashes, freezes, or abnormal behavior +- Notification or widget related issues +- Difficulty accessing privacy policy or terms pages + +To help us process your request faster, please include: +- Device model and OS version +- App version +- A brief issue description and occurrence time +- Screenshots or screen recording (if available) + +Service commitment: +- We generally respond within 3-5 business days +- Emergency availability may vary by holidays and local time + +--- +Dear Mama|技術支援 +最後更新日期:2026 年 2 月 + +如需 Dear Mama 的技術支援,請透過以下方式聯絡我們: +- 支援信箱:leitinglan@project-c.org + +支援範圍(包含但不限於): +- App 安裝或更新問題 +- App 閃退、卡頓或異常行為 +- 通知或小組件相關問題 +- 隱私政策或使用條款頁面無法開啟 + +為了加快處理,建議提供: +- 裝置型號與系統版本 +- App 版本號 +- 問題描述與發生時間 +- 截圖或螢幕錄影(如有) + +服務承諾: +- 一般會在 3-5 個工作日內回覆 +- 節假日或時區差異時,回覆時間可能延長 +""" + # 当前多语言仅支持 EN / TC(繁体) ResolvedLang = Literal["en", "tc"] @@ -129,3 +176,17 @@ async def get_terms_of_use(request: Request) -> HTMLResponse: page = render_as_simple_html(title=title, content=content) return HTMLResponse(content=page, headers={"Content-Language": "en" if resolved == "en" else "zh-Hant"}) + +@router.get("/support", response_class=HTMLResponse) +async def get_support_page(request: Request) -> HTMLResponse: + """ + 技术支持页面(用于 App 审核的可访问 URL)。 + """ + + accept_language = request.headers.get("accept-language") + lang = _resolve_lang(accept_language) + content, resolved = choose_content_by_lang(SUPPORT_MD, lang) + title = "Dear Mama | Technical Support" if resolved == "en" else "Dear Mama|技術支援" + page = render_as_simple_html(title=title, content=content) + return HTMLResponse(content=page, headers={"Content-Language": "en" if resolved == "en" else "zh-Hant"}) + diff --git a/spec_kit/overview.md b/spec_kit/overview.md index 47ab100..f8e9649 100644 --- a/spec_kit/overview.md +++ b/spec_kit/overview.md @@ -202,6 +202,7 @@ - 后端新增内置协议内容页: - `GET /v1/legal/privacy` - `GET /v1/legal/terms` + - `GET /v1/legal/support`(技术支持页面,提供审核可用的公开支持信息) - 客户端新增协议接口封装 `client/src/services/legalApi.ts` - 客户端工程化:新增统一 HTTP 封装 `client/src/utils/http.ts`(baseURL/超时/JSON/统一错误),并将 `legalApi.ts` / `recoApi.ts` 接入 - 客户端接入两处入口:`app/(splash)/splash.tsx`、`components/home/ProfileModal.tsx` -- 2.49.1 From 43e33eb991685d734a6d621e5e7f802f85d61824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=96=B0=E9=9B=A8?= Date: Wed, 25 Feb 2026 17:42:34 +0800 Subject: [PATCH 16/19] =?UTF-8?q?fix:=E6=9B=B4=E6=96=B0=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=E9=9A=90=E7=A7=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/app/api/v1/legal.py | 72 +++++++++++++++++++++++++++++--------- server/app/legal_docs.py | 5 +-- spec_kit/overview.md | 2 ++ 3 files changed, 61 insertions(+), 18 deletions(-) diff --git a/server/app/api/v1/legal.py b/server/app/api/v1/legal.py index 0a16e2c..d6cf918 100644 --- a/server/app/api/v1/legal.py +++ b/server/app/api/v1/legal.py @@ -7,7 +7,13 @@ from fastapi.responses import HTMLResponse from pydantic import BaseModel, HttpUrl from app.core.config import get_settings -from app.legal_docs import PRIVACY_POLICY_MD, TERMS_OF_USE_MD, choose_content_by_lang, render_as_simple_html +from app.legal_docs import ( + PRIVACY_POLICY_MD, + TERMS_OF_USE_MD, + choose_content_by_lang, + render_as_simple_html, + split_bilingual_markdown, +) router = APIRouter(prefix="/v1/legal", tags=["legal"]) @@ -64,6 +70,7 @@ Dear Mama|技術支援 # 当前多语言仅支持 EN / TC(繁体) ResolvedLang = Literal["en", "tc"] +BILINGUAL_CONTENT_LANGUAGE = "en, zh-Hant" class LegalLinksResponse(BaseModel): @@ -132,6 +139,18 @@ def _normalize_internal_url(request: Request, url: str, internal_path: str) -> s return _join_base_url(str(request.base_url), internal_path) +def _build_bilingual_content(text: str) -> str: + """ + 固定输出双语协议内容:EN 在前,TC 在后。 + 若缺少 TC,则仅返回 EN。 + """ + + en, tc = split_bilingual_markdown(text) + if not tc: + return en + return f"{en}\n\n---\n{tc}" + + @router.get("/links", response_model=LegalLinksResponse) async def get_legal_links(request: Request) -> LegalLinksResponse: """ @@ -156,11 +175,18 @@ async def get_privacy_policy(request: Request) -> HTMLResponse: """ accept_language = request.headers.get("accept-language") - lang = _resolve_lang(accept_language) - content, resolved = choose_content_by_lang(PRIVACY_POLICY_MD, lang) - title = "Dear Mama | Privacy Policy" if resolved == "en" else "Dear Mama|隱私權政策" - page = render_as_simple_html(title=title, content=content) - return HTMLResponse(content=page, headers={"Content-Language": "en" if resolved == "en" else "zh-Hant"}) + if accept_language: + lang = _resolve_lang(accept_language) + content, resolved = choose_content_by_lang(PRIVACY_POLICY_MD, lang) + title = "Dear Mama | Privacy Policy" if resolved == "en" else "Dear Mama|隱私權政策" + html_lang = "en" if resolved == "en" else "zh-Hant" + page = render_as_simple_html(title=title, content=content, html_lang=html_lang) + return HTMLResponse(content=page, headers={"Content-Language": html_lang}) + + content = _build_bilingual_content(PRIVACY_POLICY_MD) + title = "Dear Mama | Privacy Policy / 隱私權政策" + page = render_as_simple_html(title=title, content=content, html_lang="en") + return HTMLResponse(content=page, headers={"Content-Language": BILINGUAL_CONTENT_LANGUAGE}) @router.get("/terms", response_class=HTMLResponse) @@ -170,11 +196,18 @@ async def get_terms_of_use(request: Request) -> HTMLResponse: """ accept_language = request.headers.get("accept-language") - lang = _resolve_lang(accept_language) - content, resolved = choose_content_by_lang(TERMS_OF_USE_MD, lang) - title = "Dear Mama – Terms of Use" if resolved == "en" else "Dear Mama 使用條款" - page = render_as_simple_html(title=title, content=content) - return HTMLResponse(content=page, headers={"Content-Language": "en" if resolved == "en" else "zh-Hant"}) + if accept_language: + lang = _resolve_lang(accept_language) + content, resolved = choose_content_by_lang(TERMS_OF_USE_MD, lang) + title = "Dear Mama – Terms of Use" if resolved == "en" else "Dear Mama 使用條款" + html_lang = "en" if resolved == "en" else "zh-Hant" + page = render_as_simple_html(title=title, content=content, html_lang=html_lang) + return HTMLResponse(content=page, headers={"Content-Language": html_lang}) + + content = _build_bilingual_content(TERMS_OF_USE_MD) + title = "Dear Mama – Terms of Use / 使用條款" + page = render_as_simple_html(title=title, content=content, html_lang="en") + return HTMLResponse(content=page, headers={"Content-Language": BILINGUAL_CONTENT_LANGUAGE}) @router.get("/support", response_class=HTMLResponse) @@ -184,9 +217,16 @@ async def get_support_page(request: Request) -> HTMLResponse: """ accept_language = request.headers.get("accept-language") - lang = _resolve_lang(accept_language) - content, resolved = choose_content_by_lang(SUPPORT_MD, lang) - title = "Dear Mama | Technical Support" if resolved == "en" else "Dear Mama|技術支援" - page = render_as_simple_html(title=title, content=content) - return HTMLResponse(content=page, headers={"Content-Language": "en" if resolved == "en" else "zh-Hant"}) + if accept_language: + lang = _resolve_lang(accept_language) + content, resolved = choose_content_by_lang(SUPPORT_MD, lang) + title = "Dear Mama | Technical Support" if resolved == "en" else "Dear Mama|技術支援" + html_lang = "en" if resolved == "en" else "zh-Hant" + page = render_as_simple_html(title=title, content=content, html_lang=html_lang) + return HTMLResponse(content=page, headers={"Content-Language": html_lang}) + + content = _build_bilingual_content(SUPPORT_MD) + title = "Dear Mama | Technical Support / 技術支援" + page = render_as_simple_html(title=title, content=content, html_lang="en") + return HTMLResponse(content=page, headers={"Content-Language": BILINGUAL_CONTENT_LANGUAGE}) diff --git a/server/app/legal_docs.py b/server/app/legal_docs.py index ebf9b1b..42ffddc 100644 --- a/server/app/legal_docs.py +++ b/server/app/legal_docs.py @@ -265,7 +265,7 @@ def choose_content_by_lang(text: str, lang: ResolvedLang) -> tuple[str, Resolved return en, "en" -def render_as_simple_html(title: str, content: str) -> str: +def render_as_simple_html(title: str, content: str, html_lang: str = "en") -> str: """ 将文本以简单 HTML 的方式展示(使用 pre 保留换行并自动换行)。 不做 Markdown 渲染,避免引入额外依赖,确保“最小可用、必有内容”。 @@ -273,8 +273,9 @@ def render_as_simple_html(title: str, content: str) -> str: safe_title = html.escape(title) safe_content = html.escape(content) + safe_lang = html.escape(html_lang or "en") return f""" - + diff --git a/spec_kit/overview.md b/spec_kit/overview.md index f8e9649..57f4c59 100644 --- a/spec_kit/overview.md +++ b/spec_kit/overview.md @@ -203,6 +203,8 @@ - `GET /v1/legal/privacy` - `GET /v1/legal/terms` - `GET /v1/legal/support`(技术支持页面,提供审核可用的公开支持信息) + - 协议展示策略调整:`/v1/legal/privacy`、`/v1/legal/terms`、`/v1/legal/support` 在携带 `Accept-Language` 时按语言单语展示(EN/TC),缺省时展示 EN + TC(EN 在前、TC 在后) + - 协议页面语义修复:HTML 根节点 `lang` 属性不再写死,改为随页面实际语言输出(单语 en/zh-Hant;双语默认 en) - 客户端新增协议接口封装 `client/src/services/legalApi.ts` - 客户端工程化:新增统一 HTTP 封装 `client/src/utils/http.ts`(baseURL/超时/JSON/统一错误),并将 `legalApi.ts` / `recoApi.ts` 接入 - 客户端接入两处入口:`app/(splash)/splash.tsx`、`components/home/ProfileModal.tsx` -- 2.49.1 From 0ad21da246aad0ef5a0f9792a1dd78473da9eb8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=96=B0=E9=9B=A8?= Date: Wed, 25 Feb 2026 17:46:59 +0800 Subject: [PATCH 17/19] =?UTF-8?q?fix:=E6=9B=B4=E6=96=B0=E9=9A=90=E7=A7=81?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E8=AF=AD=E8=A8=80=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/app/api/v1/legal.py | 22 ++++++++++++++++------ server/celerybeat-schedule | Bin 12288 -> 12288 bytes server/celerybeat-schedule-shm | Bin 32768 -> 0 bytes server/celerybeat-schedule-wal | Bin 675712 -> 0 bytes 4 files changed, 16 insertions(+), 6 deletions(-) delete mode 100644 server/celerybeat-schedule-shm delete mode 100644 server/celerybeat-schedule-wal diff --git a/server/app/api/v1/legal.py b/server/app/api/v1/legal.py index d6cf918..1986aa0 100644 --- a/server/app/api/v1/legal.py +++ b/server/app/api/v1/legal.py @@ -90,13 +90,23 @@ def _resolve_lang(accept_language: Optional[str]) -> ResolvedLang: if not accept_language: return "en" - s = accept_language.lower() - # 目前只支持 EN / TC:只要是中文或显式 tc,都归到 tc - if "tc" in s: - return "tc" - if "zh" in s or "hant" in s or "tw" in s or "hk" in s or "mo" in s: - return "tc" + # 按语言优先级顺序逐项解析,避免“只要包含 zh 就全判 tc”。 + # 例如:en-US,en;q=0.9,zh-CN;q=0.8 应命中 en,而不是 tc。 + items = [seg.strip().lower() for seg in accept_language.split(",") if seg.strip()] + for item in items: + lang_tag = item.split(";", 1)[0].strip() + if not lang_tag: + continue + + if lang_tag == "tc": + return "tc" + if lang_tag.startswith(("zh-hant", "zh-tw", "zh-hk", "zh-mo")): + return "tc" + if lang_tag.startswith("zh"): + return "tc" + if lang_tag.startswith("en"): + return "en" return "en" diff --git a/server/celerybeat-schedule b/server/celerybeat-schedule index df15f253a3b26e777fa9966fc3d13075d2d45aa5..06527ca71f7f73659aeff1b97bc01ae46977f190 100644 GIT binary patch delta 562 zcmZojXh_(=D8SEun}LNVn3;bc|4RNAp5TpzmYj-h`i?zg)Ea;-)W zqX97ZOrZXp+%K=dtkjq_`JTKIvruE^IjJcOF9E~%rsn_v delta 335 zcmZojXh_(=D8SFaz`(+j#=w7=e?9*lp0tgHVLZZZu8o2$QoRhRc_l@esl^Q}Q}rij zNv>w+W>7Qa+TS@@Mky*F5|=ka52MzU44Dj>$@8RI6}efB85m;wr(}q=O$nOf z{UbwKqlZ~b-w>< zgYx3cN|nr$@5`%monherz<-ASCI8LMf(onnCkAlXaWhLXLOjgFEX4%%I>SVMW+g@> bvntq_1sF@J%0a^M@nxw+#hLke@$r=asuE#s diff --git a/server/celerybeat-schedule-shm b/server/celerybeat-schedule-shm deleted file mode 100644 index 9fb6ee4066f412ab78904a1390fac25db623002d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 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 V5I_I{1Q0N%KoY&cANT16{vSA43m^ah -- 2.49.1 From d37262876bc472552bd139d1b630d20c93cd2716 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=96=B0=E9=9B=A8?= Date: Tue, 3 Mar 2026 19:55:53 +0800 Subject: [PATCH 18/19] =?UTF-8?q?Ipad=E9=80=82=E9=85=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/app/(app)/home.tsx | 67 +++++--- client/app/(app)/settings.tsx | 22 ++- client/app/(splash)/splash.tsx | 58 ++++--- client/app/+not-found.tsx | 23 ++- client/app/index.tsx | 23 ++- client/app/modal.tsx | 21 ++- client/components/home/ProfileModal.tsx | 112 ++++++++----- client/components/home/ThemeModal.tsx | 13 +- .../components/onboarding/NameInputStep.tsx | 7 +- .../onboarding/OnboardingLayout.tsx | 10 +- client/components/onboarding/ReminderStep.tsx | 7 +- .../components/onboarding/SelectionStep.tsx | 21 ++- client/components/ui/SheetModal.tsx | 21 ++- client/ios/client.xcodeproj/project.pbxproj | 33 ++-- client/ios/client/Info.plist | 8 +- client/ios/情绪小组件/EmotionWidget.swift | 4 +- client/src/utils/device.ts | 9 ++ spec_kit/iPad Adaptation/plan.md | 137 ++++++++++++++++ spec_kit/iPad Adaptation/spec.md | 92 +++++++++++ spec_kit/iPad Adaptation/task.md | 151 ++++++++++++++++++ 20 files changed, 692 insertions(+), 147 deletions(-) create mode 100644 client/src/utils/device.ts create mode 100644 spec_kit/iPad Adaptation/plan.md create mode 100644 spec_kit/iPad Adaptation/spec.md create mode 100644 spec_kit/iPad Adaptation/task.md diff --git a/client/app/(app)/home.tsx b/client/app/(app)/home.tsx index 97609ae..ddefc23 100644 --- a/client/app/(app)/home.tsx +++ b/client/app/(app)/home.tsx @@ -2,13 +2,13 @@ import { useEffect, useLayoutEffect, useMemo, useState, useCallback, useRef } fr import { StyleSheet, View, - Dimensions, Text, Pressable, PanResponder, Animated as RNAnimated, ImageBackground, Platform, + useWindowDimensions, } from 'react-native'; import { useTranslation } from 'react-i18next'; import { useFocusEffect } from 'expo-router'; @@ -57,8 +57,6 @@ import { wrapText } from '@/src/features/textWrap'; import { defaultMeasureWidthImpl } from '@/src/features/textWrap/measure'; import { ensureDailyWidgetRecoUpToDate } from '@/src/modules/dailyWidgetReco'; -const { height: SCREEN_HEIGHT } = Dimensions.get('window'); - // 预定义风景图列表 const NATURE_IMAGES = [ require('@/assets/theme/nature/1.png'), @@ -97,7 +95,9 @@ type FeedItem = { content_id: string; text: string }; export default function HomeScreen() { const { t, i18n } = useTranslation(); + const { width: windowWidth, height: windowHeight } = useWindowDimensions(); const isEnglish = i18n.language?.startsWith('en'); + const isTablet = Platform.OS === 'ios' && Math.min(windowWidth, windowHeight) >= 768; const recoLang: 'en' | 'tc' = toBackendLocaleFromLanguageTag(i18n.language); const insets = useSafeAreaInsets(); const [index, setIndex] = useState(0); @@ -248,8 +248,8 @@ export default function HomeScreen() { }); const fontSpec = { - fontSize: 22, - fontWeight: lang === 'EN' ? '600' : '700', + fontSize: 24, + fontWeight: lang === 'EN' ? '700' : '800', fontFamily: String(fontFamily ?? 'System'), }; @@ -659,6 +659,10 @@ export default function HomeScreen() { } } + const actionsBottom = isTablet + ? Math.max(insets.bottom + 36, Math.min(windowHeight * 0.12, 140)) + : windowHeight * 0.16; + return ( {themeMode === 'scenery' && ( @@ -670,7 +674,15 @@ export default function HomeScreen() { )} {/* 自绘顶部按钮:不使用系统 Header,彻底避免 iOS 导航栏的毛玻璃/液玻璃材质 */} - + setThemeOpen(true)} accessibilityLabel={t('home.theme')} @@ -685,19 +697,21 @@ export default function HomeScreen() { - { - const w = e.nativeEvent.layout.width; - if (Number.isFinite(w) && w > 0) setCardWidth(w); - }} - > - - {wrappedText || item.text} - + + { + const w = e.nativeEvent.layout.width; + if (Number.isFinite(w) && w > 0) setCardWidth(w); + }} + > + + {wrappedText || item.text} + + - + + {t('settings.version')} {version} @@ -21,12 +26,18 @@ export default function SettingsScreen() { {t('settings.widgetTitle')} {t('settings.widgetDesc')} + ); } const styles = StyleSheet.create({ - container: { flex: 1, padding: 16, gap: 16 }, + container: { flex: 1, width: '100%', alignSelf: 'stretch', padding: 16 }, + contentWrap: { + width: '100%', + alignSelf: 'center', + gap: 16, + }, section: { borderRadius: 14, padding: 16, @@ -38,7 +49,12 @@ const styles = StyleSheet.create({ justifyContent: 'space-between', }, label: { color: '#374151', fontSize: 16 }, - value: { color: '#111827', fontSize: 16, fontWeight: '600' }, + value: { + color: '#111827', + fontSize: 16, + fontWeight: '600', + fontFamily: Platform.OS === 'ios' ? 'STIX Two Text' : undefined, + }, card: { borderRadius: 16, padding: 16, diff --git a/client/app/(splash)/splash.tsx b/client/app/(splash)/splash.tsx index 129f329..ce56923 100644 --- a/client/app/(splash)/splash.tsx +++ b/client/app/(splash)/splash.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useRef, useState } from 'react'; -import { View, Text, StyleSheet, TouchableOpacity, Dimensions, Platform, Alert, Image } from 'react-native'; +import { View, Text, StyleSheet, TouchableOpacity, Platform, Alert, Image, useWindowDimensions } from 'react-native'; import { useRouter } from 'expo-router'; import * as WebBrowser from 'expo-web-browser'; import { Trans, useTranslation } from 'react-i18next'; @@ -14,8 +14,6 @@ import { isTraditionalChineseLocaleTag } from '@/src/i18n/locale'; import FlowersBg from '../../assets/images/index/flowers_endbg.svg'; import WelcomeBtn from '../../assets/images/index/welcome_btn.svg'; -const { width, height } = Dimensions.get('window'); - // 繁中開屏 consent 文案:寫死在元件內,避免 Metro/iOS bundle 快取導致永遠顯示舊文案。 // 若需修改,請改這裡並同步 client/src/i18n/locales/zh-TW.json 的 consent 區塊。 const ZH_TW_CONSENT = { @@ -27,7 +25,9 @@ const ZH_TW_CONSENT = { export default function SplashScreen() { const router = useRouter(); const { t, i18n } = useTranslation(); + const { width, height } = useWindowDimensions(); const [showConsent, setShowConsent] = useState(false); + const isTablet = Platform.OS === 'ios' && Math.min(width, height) >= 768; // 繁中時強制使用上方常數(含 zh-TW / zh-Hant / zh-Hant-TW),其餘用 i18n const isZhTW = isTraditionalChineseLocaleTag(i18n.language || ''); @@ -127,52 +127,67 @@ export default function SplashScreen() { void refreshLegalLinks(); }, []); - const bgDecorationTop = 363; - const bgDecorationHeight = height * 0.6; + const bgDecorationHeight = isTablet ? Math.round(height * 0.55) : height * 0.6; + const bgDecorationTop = height - bgDecorationHeight; const contentTop = bgDecorationTop + (bgDecorationHeight * 0.25); + const contentWidth = isTablet ? Math.min(640, Math.floor(width * 0.76)) : width; + const topImageWidth = isTablet ? Math.min(430, Math.floor(width * 0.48)) : 308; + const topImageHeight = isTablet ? Math.min(460, Math.floor(height * 0.45)) : 354; + const topImageMarginTop = isTablet ? 148 : 60; + const bgWidth = width + 10; + const bgLeft = -3; + const buttonSize = isTablet ? { width: 108, height: 70 } : { width: 87, height: 57 }; + const bottomOffset = isTablet ? 28 : 60; + const buttonBottomGap = isTablet ? 28 : 40; + const noticeStyle = isTablet + ? { fontSize: 14, lineHeight: 20, paddingHorizontal: 32, maxWidth: contentWidth } + : null; + const noticeLinkStyle = isTablet ? { fontSize: 14 } : null; + const titleStyle = isTablet ? { fontSize: 50, lineHeight: 60 } : null; + const subtitleStyle = isTablet ? { marginTop: 10, fontSize: 18, lineHeight: 24 } : null; return ( {/* 中间的背景装饰 SVG (现在放在上面,作为上层) */} - - + + {/* 顶部的花图片 (现在放在下面,作为下层) */} - + {/* 文案内容:主標題兩行 + 可選二級標題(字號更小、顏色更淺);繁中為元件內常數,其餘用 i18n */} - - + + {title} {'\n'} {subtitle} {subtitleSecondary ? ( - {subtitleSecondary} + {subtitleSecondary} ) : null} - + {showConsent && ( <> - + - + void handleOpenLegal('privacy')} suppressHighlighting /> ), terms: ( void handleOpenLegal('terms')} suppressHighlighting /> @@ -209,11 +224,13 @@ export default function SplashScreen() { const styles = StyleSheet.create({ container: { flex: 1, + width: '100%', + height: '100%', + alignSelf: 'stretch', backgroundColor: '#F5D3B5', // 匹配 Figma 背景色 alignItems: 'center', }, topImageContainer: { - marginTop: 60, zIndex: 1, // 降低层级 }, topImage: { @@ -222,7 +239,6 @@ const styles = StyleSheet.create({ }, bgDecorationContainer: { position: 'absolute', - left: -3, zIndex: 2, // 提高层级,使其覆盖在图片之上 }, contentContainer: { @@ -247,8 +263,6 @@ const styles = StyleSheet.create({ }, bottomContainer: { position: 'absolute', - bottom: 60, - width: '100%', alignItems: 'center', zIndex: 4, }, diff --git a/client/app/+not-found.tsx b/client/app/+not-found.tsx index ffb5643..56e2694 100644 --- a/client/app/+not-found.tsx +++ b/client/app/+not-found.tsx @@ -1,18 +1,25 @@ import { Link, Stack } from 'expo-router'; -import { StyleSheet } from 'react-native'; +import { StyleSheet, useWindowDimensions } from 'react-native'; import { Text, View } from '@/components/Themed'; +import { clampContentWidth, isIPadLike } from '@/src/utils/device'; export default function NotFoundScreen() { + const { width, height } = useWindowDimensions(); + const isTablet = isIPadLike(width, height); + const contentWidth = isTablet ? clampContentWidth(width, 680, 24) : undefined; + return ( <> - This screen doesn't exist. + + This screen doesn't exist. - - Go to home screen! - + + Go to home screen! + + ); @@ -24,6 +31,12 @@ const styles = StyleSheet.create({ alignItems: 'center', justifyContent: 'center', padding: 20, + width: '100%', + alignSelf: 'stretch', + }, + contentWrap: { + width: '100%', + alignItems: 'center', }, title: { fontSize: 20, diff --git a/client/app/index.tsx b/client/app/index.tsx index 869780e..1ea2643 100644 --- a/client/app/index.tsx +++ b/client/app/index.tsx @@ -1,14 +1,18 @@ import { useEffect } from 'react'; -import { ActivityIndicator, StyleSheet, View } from 'react-native'; +import { ActivityIndicator, StyleSheet, View, useWindowDimensions } from 'react-native'; import { useRouter } from 'expo-router'; import { getOnboardingCompleted, getConsentAccepted } from '@/src/storage/appStorage'; +import { clampContentWidth, isIPadLike } from '@/src/utils/device'; /** * 启动分发:根据 consent 和 onboarding 状态跳转 */ export default function Index() { const router = useRouter(); + const { width, height } = useWindowDimensions(); + const isTablet = isIPadLike(width, height); + const loaderWidth = isTablet ? clampContentWidth(width, 680, 24) : undefined; useEffect(() => { let cancelled = false; @@ -41,11 +45,24 @@ export default function Index() { return ( - + + + ); } const styles = StyleSheet.create({ - container: { flex: 1, alignItems: 'center', justifyContent: 'center' }, + container: { + flex: 1, + width: '100%', + height: '100%', + alignSelf: 'stretch', + alignItems: 'center', + justifyContent: 'center', + }, + loaderWrap: { + alignItems: 'center', + justifyContent: 'center', + }, }); diff --git a/client/app/modal.tsx b/client/app/modal.tsx index fcedb7a..15aabc3 100644 --- a/client/app/modal.tsx +++ b/client/app/modal.tsx @@ -1,15 +1,22 @@ import { StatusBar } from 'expo-status-bar'; -import { Platform, StyleSheet } from 'react-native'; +import { Platform, StyleSheet, useWindowDimensions } from 'react-native'; import EditScreenInfo from '@/components/EditScreenInfo'; import { Text, View } from '@/components/Themed'; +import { clampContentWidth, isIPadLike } from '@/src/utils/device'; export default function ModalScreen() { + const { width, height } = useWindowDimensions(); + const isTablet = isIPadLike(width, height); + const contentWidth = isTablet ? clampContentWidth(width, 700, 24) : undefined; + return ( - Modal - - + + Modal + + + {/* Use a light status bar on iOS to account for the black space above the modal */} @@ -22,6 +29,12 @@ const styles = StyleSheet.create({ flex: 1, alignItems: 'center', justifyContent: 'center', + width: '100%', + alignSelf: 'stretch', + }, + contentWrap: { + width: '100%', + alignItems: 'center', }, title: { fontSize: 20, diff --git a/client/components/home/ProfileModal.tsx b/client/components/home/ProfileModal.tsx index 200d0bf..da81e32 100644 --- a/client/components/home/ProfileModal.tsx +++ b/client/components/home/ProfileModal.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useMemo, useState, useRef, useCallback } from 'react'; -import { Alert, FlatList, Image, Pressable, StyleSheet, Text, View, Platform, Dimensions } from 'react-native'; +import { Alert, FlatList, Image, Pressable, StyleSheet, Text, View, Platform, useWindowDimensions } from 'react-native'; import { useTranslation } from 'react-i18next'; import { LinearGradient } from 'expo-linear-gradient'; import { Switch } from 'react-native'; @@ -42,8 +42,7 @@ import * as Notifications from 'expo-notifications'; import { changeLanguage } from '@/src/i18n'; import { fetchLegalLinks } from '@/src/services/legalApi'; import { ensurePushTokenRegisteredIfPermitted, setPushPreferences } from '@/src/services/pushApi'; - -const { width } = Dimensions.get('window'); +import { isIPadLike } from '@/src/utils/device'; type Props = { visible: boolean; @@ -79,6 +78,12 @@ const NATURE_IMAGES = [ export default function ProfileModal({ visible, name: propName, onClose }: Props) { const { t } = useTranslation(); + const { width, height } = useWindowDimensions(); + const isTablet = isIPadLike(width, height); + const contentWidth = isTablet ? width - 40 : width - 40; + const thumbWidth = isTablet ? Math.min(420, contentWidth - 120) : Math.min(width * 0.6, 300); + const widgetImageWidth = isTablet ? Math.min(520, contentWidth - 24) : width * 0.9; + const howToSlideWidth = isTablet ? Math.min(640, contentWidth) : width - 32; const [page, setPage] = useState('root'); const [navDirection, setNavDirection] = useState('forward'); @@ -192,6 +197,7 @@ export default function ProfileModal({ visible, name: propName, onClose }: Props {page === 'root' ? ( go('favorites', 'forward')} onOpenWidget={() => go('widget', 'forward')} onOpenDailyReminder={() => go('dailyReminder', 'forward')} @@ -200,15 +206,15 @@ export default function ProfileModal({ visible, name: propName, onClose }: Props onOpenTerms={() => openLink(legalLinks.terms)} /> ) : page === 'favorites' ? ( - + ) : page === 'dailyReminder' ? ( - go('root', 'back')} /> + go('root', 'back')} contentWidth={contentWidth} /> ) : page === 'language' ? ( - + ) : page === 'widgetHowTo' ? ( - + ) : ( - go('widgetHowTo', 'forward')} /> + go('widgetHowTo', 'forward')} widgetImageWidth={widgetImageWidth} /> )} @@ -222,6 +228,7 @@ function toastTodo(t: (key: string) => string) { function RootPage({ name, + contentWidth, onOpenFavorites, onOpenWidget, onOpenDailyReminder, @@ -230,6 +237,7 @@ function RootPage({ onOpenTerms, }: { name?: string; + contentWidth: number; onOpenFavorites: () => void; onOpenWidget: () => void; onOpenDailyReminder: () => void; @@ -239,7 +247,7 @@ function RootPage({ }) { const { t } = useTranslation(); return ( - <> + {name || 'Hali'} @@ -276,11 +284,23 @@ function RootPage({ onPress={onOpenLanguage} /> - + + V1.0.0 + ); } -function FavoritesPage({ visible, page }: { visible: boolean; page: Page }) { +function FavoritesPage({ + visible, + page, + thumbWidth, + contentWidth, +}: { + visible: boolean; + page: Page; + thumbWidth: number; + contentWidth: number; +}) { const { t } = useTranslation(); const [favorites, setFavorites] = useState<(FavoriteItem & { text: string })[]>([]); @@ -317,7 +337,7 @@ function FavoritesPage({ visible, page }: { visible: boolean; page: Page }) { } return ( - + {favorites.length === 0 ? ( {t('favorites.empty')} ) : ( @@ -339,6 +359,7 @@ function FavoritesPage({ visible, page }: { visible: boolean; page: Page }) { {item.themeMode === 'scenery' ? ( @@ -346,7 +367,7 @@ function FavoritesPage({ visible, page }: { visible: boolean; page: Page }) { void }) { +function DailyReminderPage({ + visible, + onDone, + contentWidth, +}: { + visible: boolean; + onDone: () => void; + contentWidth: number; +}) { const { t } = useTranslation(); const [loading, setLoading] = useState(false); const [timesPerDay, setTimesPerDay] = useState(3); @@ -525,7 +554,7 @@ function DailyReminderPage({ visible, onDone }: { visible: boolean; onDone: () = - + @@ -556,7 +585,7 @@ function DailyReminderPage({ visible, onDone }: { visible: boolean; onDone: () = ); } -function WidgetPage({ onOpenHowTo }: { onOpenHowTo: () => void }) { +function WidgetPage({ onOpenHowTo, widgetImageWidth }: { onOpenHowTo: () => void; widgetImageWidth: number }) { const { t, i18n } = useTranslation(); const currentLang = i18n.language; // 需求:个人主页弹窗「小工具」页暂时隐藏锁屏小工具说明/入口 @@ -580,13 +609,13 @@ function WidgetPage({ onOpenHowTo }: { onOpenHowTo: () => void }) { {showLockScreenWidget ? ( - + {t('widget.lockScreen')} ) : null} - + {t('widget.homeScreen')} @@ -594,7 +623,7 @@ function WidgetPage({ onOpenHowTo }: { onOpenHowTo: () => void }) { ); } -function WidgetHowToPage() { +function WidgetHowToPage({ howToSlideWidth, widgetImageWidth }: { howToSlideWidth: number; widgetImageWidth: number }) { const { t, i18n } = useTranslation(); const currentLang = i18n.language; const flatListRef = useRef(null); @@ -631,7 +660,7 @@ function WidgetHowToPage() { const onScroll = (event: any) => { const x = event.nativeEvent.contentOffset.x; - const index = Math.round(x / (width - 32)); + const index = Math.round(x / howToSlideWidth); if (index !== activeIndex) { setActiveIndex(index); } @@ -655,14 +684,14 @@ function WidgetHowToPage() { onScrollBeginDrag={onScrollBeginDrag} scrollEventThrottle={16} renderItem={({ item }) => ( - - + + {item.desc} )} /> - + {images.map((_, i) => ( - + + {languages.map((lang, index) => ( = 768; + return ( - + = 768; const [isFocused, setIsFocused] = useState(false); const [keyboardHeight, setKeyboardHeight] = useState(0); const blinkAnim = useRef(new Animated.Value(1)).current; const hasInput = value.trim().length > 0; + const inputCardWidth = isTablet ? Math.min(520, Math.floor(width * 0.72)) : 335; useEffect(() => { const showEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow'; @@ -62,7 +65,7 @@ export function NameInputStep({ value, onChangeText, onNext }: NameInputStepProp return ( - + {/* 显示层:文案 + 跟随的光标 */} diff --git a/client/components/onboarding/OnboardingLayout.tsx b/client/components/onboarding/OnboardingLayout.tsx index a20d685..f2ddc64 100644 --- a/client/components/onboarding/OnboardingLayout.tsx +++ b/client/components/onboarding/OnboardingLayout.tsx @@ -1,5 +1,5 @@ import React, { useRef, useEffect } from 'react'; -import { View, StyleSheet, SafeAreaView, TouchableOpacity, StatusBar, Text, Image, Platform, Animated, Easing } from 'react-native'; +import { View, StyleSheet, SafeAreaView, TouchableOpacity, StatusBar, Text, Image, Platform, Animated, Easing, useWindowDimensions } from 'react-native'; import { useTranslation } from 'react-i18next'; import { OnboardingColors, OnboardingFont } from '@/constants/OnboardingTheme'; @@ -29,6 +29,9 @@ export function OnboardingLayout({ userName = '', }: OnboardingLayoutProps) { const { t } = useTranslation(); + const { width, height } = useWindowDimensions(); + const isTablet = Platform.OS === 'ios' && Math.min(width, height) >= 768; + const contentMaxWidth = isTablet ? 620 : undefined; const showGreeting = currentStep === 1 && userName.trim().length > 0; const displayName = userName.trim(); const prevStepRef = useRef(currentStep); @@ -72,7 +75,7 @@ export function OnboardingLayout({ {/* Header: Back & Skip */} - + {showBackButton && onBack && ( @@ -94,7 +97,7 @@ export function OnboardingLayout({ {/* Title & Progress Row(名字步骤后第一步且名字非空时显示招呼语 + 问题) */} - + {showGreeting && ( {t('onboardingSurvey.greeting', { name: displayName })} @@ -108,6 +111,7 @@ export function OnboardingLayout({ = 768; + const contentMaxWidth = isTablet ? 560 : undefined; const handleReduce = () => { // 本页最小为 1;不接收提醒请使用右上角 Skip @@ -32,7 +35,7 @@ export function ReminderStep({ value, onChange, onFinish, loading = false }: Rem return ( - + diff --git a/client/components/onboarding/SelectionStep.tsx b/client/components/onboarding/SelectionStep.tsx index 2b9e989..64136ae 100644 --- a/client/components/onboarding/SelectionStep.tsx +++ b/client/components/onboarding/SelectionStep.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { View, StyleSheet, TouchableOpacity, ScrollView, Text } from 'react-native'; +import { View, StyleSheet, TouchableOpacity, ScrollView, Text, Platform, useWindowDimensions } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { OnboardingColors, OnboardingFont } from '@/constants/OnboardingTheme'; import BtnNotClicked from '@/assets/images/icon/btn_Notclicked.svg'; @@ -19,9 +19,12 @@ interface SelectionStepProps { } export function SelectionStep({ options, selectedIds, onToggle, onNext, onSkip }: SelectionStepProps) { + const { width, height } = useWindowDimensions(); + const isTablet = Platform.OS === 'ios' && Math.min(width, height) >= 768; + const maxOptionWidth = isTablet ? 560 : undefined; const hasSelection = selectedIds.length > 0; const insets = useSafeAreaInsets(); - const footerBottom = insets.bottom + 16; + const footerBottom = insets.bottom + (isTablet ? 38 : 28); const footerButtonHeight = 57; // 底部留白加大,避免最后一项与按钮边框视觉重叠 const footerPaddingBottom = footerBottom + footerButtonHeight + 40; @@ -31,14 +34,24 @@ export function SelectionStep({ options, selectedIds, onToggle, onNext, onSkip } {options.map((option) => { const isSelected = selectedIds.includes(option.id); return ( onToggle(option.id)} activeOpacity={0.7} > diff --git a/client/components/ui/SheetModal.tsx b/client/components/ui/SheetModal.tsx index 67db110..138b670 100644 --- a/client/components/ui/SheetModal.tsx +++ b/client/components/ui/SheetModal.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useMemo, useState, useRef } from 'react'; -import { Modal, Pressable, StyleSheet, Text, View, PanResponder, Animated as RNAnimated, Dimensions, Image, ImageSourcePropType } from 'react-native'; +import { Modal, Pressable, StyleSheet, Text, View, PanResponder, Animated as RNAnimated, Image, ImageSourcePropType, Platform, useWindowDimensions } from 'react-native'; import { useTranslation } from 'react-i18next'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import Animated, { @@ -10,7 +10,6 @@ import Animated, { withTiming, } from 'react-native-reanimated'; -const { height: SCREEN_HEIGHT } = Dimensions.get('window'); const FIXED_TOP_GAP = 100; // 统一距离顶部的高度 type Props = { @@ -30,11 +29,13 @@ type Props = { export default function SheetModal({ visible, title, onClose, children, leftIcon, height: customHeight }: Props) { const { t } = useTranslation(); const insets = useSafeAreaInsets(); + const { width: windowWidth, height: windowHeight } = useWindowDimensions(); + const isTablet = Platform.OS === 'ios' && Math.min(windowWidth, windowHeight) >= 768; const [mounted, setMounted] = useState(false); const progress = useSharedValue(0); // 0: 关闭, 1: 打开 const dragY = useSharedValue(0); // 拖拽位移 - const sheetHeight = customHeight || (SCREEN_HEIGHT - FIXED_TOP_GAP); + const sheetHeight = customHeight || (isTablet ? Math.min(windowHeight - 72, 760) : (windowHeight - FIXED_TOP_GAP)); useEffect(() => { if (visible) { @@ -90,7 +91,10 @@ export default function SheetModal({ visible, title, onClose, children, leftIcon }; }); - const containerPaddingBottom = useMemo(() => Math.max(insets.bottom, 80), [insets.bottom]); // 增加底部间距至 80,约占 350 高度的 22%,确保内容不被截断并留出足够呼吸感 + const containerPaddingBottom = useMemo(() => { + if (customHeight) return Math.max(insets.bottom, 16); + return Math.max(insets.bottom, isTablet ? 20 : 80); + }, [customHeight, insets.bottom, isTablet]); // 注意:Modal 的 visible 必须为 true 才会渲染,因此用 mounted 保持退场动画 return ( @@ -107,6 +111,7 @@ export default function SheetModal({ visible, title, onClose, children, leftIcon {...panResponder.panHandlers} style={[ styles.sheet, + isTablet ? styles.sheetTablet : null, sheetStyle, { height: sheetHeight, @@ -159,6 +164,14 @@ const styles = StyleSheet.create({ paddingTop: 8, paddingHorizontal: 16, }, + sheetTablet: { + width: '100%', + alignSelf: 'stretch', + borderTopLeftRadius: 24, + borderTopRightRadius: 24, + borderBottomLeftRadius: 0, + borderBottomRightRadius: 0, + }, handleContainer: { alignItems: 'center', paddingVertical: 8, diff --git a/client/ios/client.xcodeproj/project.pbxproj b/client/ios/client.xcodeproj/project.pbxproj index 11260de..17cea76 100644 --- a/client/ios/client.xcodeproj/project.pbxproj +++ b/client/ios/client.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 56; + objectVersion = 70; objects = { /* Begin PBXBuildFile section */ @@ -11,7 +11,7 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 1A1DE01D4133812B2E2BA692 /* libPods-client.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E3328F0E595C1F4A244DF238 /* libPods-client.a */; }; 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; - A1B2C3D4E5F60718293A4B5C /* EmotionWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D4E5F60718293A4B5B /* EmotionWidget.swift */; }; + A1B2C3D4E5F60718293A4B5C /* 情绪小组件/EmotionWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D4E5F60718293A4B5B /* 情绪小组件/EmotionWidget.swift */; }; A8C1D2E3F4A5B6C7D8E9F0A2 /* AppGroupStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8C1D2E3F4A5B6C7D8E9F0A1 /* AppGroupStorage.swift */; }; A8C1D2E3F4A5B6C7D8E9F0A3 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB3DAF802F2A4B8D00450593 /* WidgetKit.framework */; }; A8C1D2E3F4A5B6C7D8E9F0B2 /* AppGroupStorageBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C1D2E3F4A5B6C7D8E9F0B1 /* AppGroupStorageBridge.m */; }; @@ -54,7 +54,7 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = client/Info.plist; sourceTree = ""; }; 3C76CA16D0801CBF0D731C7C /* Pods-client.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-client.release.xcconfig"; path = "Target Support Files/Pods-client/Pods-client.release.xcconfig"; sourceTree = ""; }; 75F52ADE07CAE9D9736D7671 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = client/PrivacyInfo.xcprivacy; sourceTree = ""; }; - A1B2C3D4E5F60718293A4B5B /* EmotionWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "情绪小组件/EmotionWidget.swift"; sourceTree = ""; }; + A1B2C3D4E5F60718293A4B5B /* 情绪小组件/EmotionWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "情绪小组件/EmotionWidget.swift"; sourceTree = ""; }; A8C1D2E3F4A5B6C7D8E9F0A1 /* AppGroupStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppGroupStorage.swift; path = client/AppGroupStorage.swift; sourceTree = ""; }; A8C1D2E3F4A5B6C7D8E9F0B1 /* AppGroupStorageBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AppGroupStorageBridge.m; path = client/AppGroupStorageBridge.m; sourceTree = ""; }; AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = client/SplashScreen.storyboard; sourceTree = ""; }; @@ -74,7 +74,7 @@ /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ - EB3DAF952F2A4B8F00450593 /* Exceptions for "情绪小组件" folder in "情绪小组件Extension" target */ = { + EB3DAF952F2A4B8F00450593 /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( EmotionWidget.swift, @@ -85,18 +85,7 @@ /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ - EB3DAF842F2A4B8E00450593 /* 情绪小组件 */ = { - isa = PBXFileSystemSynchronizedRootGroup; - exceptions = ( - EB3DAF952F2A4B8F00450593 /* Exceptions for "情绪小组件" folder in "情绪小组件Extension" target */, - ); - explicitFileTypes = { - }; - explicitFolders = ( - ); - path = "情绪小组件"; - sourceTree = ""; - }; + EB3DAF842F2A4B8E00450593 /* 情绪小组件 */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (EB3DAF952F2A4B8F00450593 /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = "情绪小组件"; sourceTree = ""; }; /* End PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFrameworksBuildPhase section */ @@ -213,7 +202,7 @@ EB3DAFD42F2A5FC100450593 /* Recovered References */ = { isa = PBXGroup; children = ( - A1B2C3D4E5F60718293A4B5B /* EmotionWidget.swift */, + A1B2C3D4E5F60718293A4B5B /* 情绪小组件/EmotionWidget.swift */, ); name = "Recovered References"; sourceTree = ""; @@ -482,7 +471,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A1B2C3D4E5F60718293A4B5C /* EmotionWidget.swift in Sources */, + A1B2C3D4E5F60718293A4B5C /* 情绪小组件/EmotionWidget.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -536,7 +525,7 @@ SWIFT_OBJC_BRIDGING_HEADER = "client/client-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -576,7 +565,7 @@ SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_OBJC_BRIDGING_HEADER = "client/client-Bridging-Header.h"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; @@ -756,7 +745,7 @@ SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; @@ -808,7 +797,7 @@ SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; diff --git a/client/ios/client/Info.plist b/client/ios/client/Info.plist index da47e68..9b2806b 100644 --- a/client/ios/client/Info.plist +++ b/client/ios/client/Info.plist @@ -38,8 +38,6 @@ 12.0 LSRequiresIPhoneOS - NSLocalNetworkUsageDescription - 用于连接局域网服务以获取内容与同步数据(仅在需要访问内网地址时使用)。 NSAppTransportSecurity NSAllowsArbitraryLoads @@ -47,6 +45,8 @@ NSAllowsLocalNetworking + NSLocalNetworkUsageDescription + 用于连接局域网服务以获取内容与同步数据(仅在需要访问内网地址时使用)。 NSUserActivityTypes $(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route @@ -61,6 +61,8 @@ UIRequiresFullScreen + UIStatusBarHidden + UIStatusBarStyle UIStatusBarStyleDefault UISupportedInterfaceOrientations @@ -72,8 +74,6 @@ UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight UIUserInterfaceStyle Automatic diff --git a/client/ios/情绪小组件/EmotionWidget.swift b/client/ios/情绪小组件/EmotionWidget.swift index a03fde9..3bea281 100644 --- a/client/ios/情绪小组件/EmotionWidget.swift +++ b/client/ios/情绪小组件/EmotionWidget.swift @@ -280,12 +280,12 @@ struct EmotionWidgetView: View { Text(entry.text) .font(fontForFamily()) .foregroundColor(widgetTextColor) - .multilineTextAlignment(.leading) + .multilineTextAlignment(.center) .lineSpacing(lineSpacingForFamily()) .lineLimit(lineLimitForFamily()) .minimumScaleFactor(0.78) .padding(paddingForFamily()) - .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .leading) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center) .widgetSolidBackground(widgetBackgroundColor) .widgetURL(deepLink) } diff --git a/client/src/utils/device.ts b/client/src/utils/device.ts new file mode 100644 index 0000000..9d9c01b --- /dev/null +++ b/client/src/utils/device.ts @@ -0,0 +1,9 @@ +import { Platform } from 'react-native'; + +export function isIPadLike(width: number, height: number): boolean { + return Platform.OS === 'ios' && Math.min(width, height) >= 768; +} + +export function clampContentWidth(width: number, maxWidth: number, horizontalPadding: number): number { + return Math.min(maxWidth, Math.max(0, width - horizontalPadding * 2)); +} diff --git a/spec_kit/iPad Adaptation/plan.md b/spec_kit/iPad Adaptation/plan.md new file mode 100644 index 0000000..3bbce4f --- /dev/null +++ b/spec_kit/iPad Adaptation/plan.md @@ -0,0 +1,137 @@ +# iPad Adaptation(技术计划) + +## 1. 计划目标 + +基于 `spec.md`,落地“全应用 iPad 适配(含 iOS Widget)”实施方案,确保: + +- 客户端所有页面在 iPad 下可用、可读、可交互; +- 以 **竖屏** 为主目标完成逐页适配与验收; +- iOS Widget 在 iPad 相关尺寸下展示稳定; +- 全过程保持 **iPhone 零回归**。 + +## 2. 默认技术决策 + +- **适配方式**:React Native 断点 + 条件样式(不改 iPhone 基线参数)。 +- **iPad 判定**:`Platform.OS === 'ios' && Math.min(width, height) >= 768`。 +- **尺寸获取**:统一使用 `useWindowDimensions()`,避免 `Dimensions.get()` 静态值问题。 +- **布局原则**:页面采用“最大内容宽度 + 居中 + 弹性留白”。 +- **改造策略**:按页面逐个交付,单页完成后冻结,待确认再进入下一页。 + +## 3. 工程配置基线(先决条件) + +### 3.1 原生配置核查 + +- `app.json` 中 `expo.ios.supportsTablet = true`(已要求)。 +- iOS 工程目标设备族支持 iPad(`TARGETED_DEVICE_FAMILY` 需包含 `1,2`)。 +- 方向策略与产品要求一致(当前优先竖屏;若仅竖屏,则 iPad 也收敛为竖屏策略)。 +- 避免 iPad 以 iPhone 兼容模式运行(该模式会导致系统黑边)。 + +### 3.2 运行模式与验收环境 + +- iPad 模拟器:至少 1 台主流尺寸(如 11-inch)。 +- iPad 真机:至少 1 台(若可用),用于确认系统级显示行为。 +- iPhone 回归机型:至少小屏 + 大屏各 1 个。 + +## 4. 页面适配实施策略(逐页) + +### 4.1 页面分批顺序 + +1. 启动链路:`splash / consent / index` +2. Onboarding 全流程页 +3. 主应用页:`home`、详情/弹层、设置、收藏等 +4. 边缘页:`modal`、`not-found`、其他辅助页 + +### 4.2 单页改造标准模板 + +每页按以下模板执行: + +1. 梳理页面结构:首屏视觉区、正文区、底部操作区、浮层区。 +2. 抽离 iPad 分支参数:最大宽度、字号、行高、间距、按钮尺寸。 +3. 保持 iPhone 参数不变:原样式分支保留。 +4. 自测: + - iPad 竖屏显示完整; + - 文案不截断、按钮可点击; + - iPhone 关键路径不回归。 +5. 输出截图与验收点,待确认后冻结该页。 + +### 4.3 可复用样式基线(建议) + +- 页面容器:`flex: 1` + `width/height: '100%'` + `alignSelf: 'stretch'`。 +- 内容最大宽度:按页面类型设置(例如 560/620/680 分级),统一居中。 +- 底部操作区:基于安全区与窗口高度计算,不使用硬编码魔法值。 +- 文案区:限制最大阅读宽度,iPad 适度增大字号与行高。 +- 图片/插画:按比例缩放,优先保持构图稳定,不压缩变形。 + +## 5. iOS Widget 适配计划 + +### 5.1 覆盖范围 + +- 小/中/大组件在 iPad 下的展示一致性; +- 文案长度、换行与截断策略; +- 图形与文本的层级、边距、留白; +- 浅色模式基线(深色模式按资源情况补充)。 + +### 5.2 实施要点 + +- 统一组件内边距与字号层级映射; +- 对长文本提供优雅截断(避免溢出与跳变); +- 验证不同语言长度对布局影响; +- 输出尺寸矩阵截图作为最终验收材料。 + +## 6. iPhone 零回归保障 + +- 所有 iPad 适配均以条件分支或断点参数实现; +- 禁止直接覆盖 iPhone 基线字号/间距; +- 每完成一页,执行 iPhone 冒烟回归: + - 启动流程; + - Onboarding 关键交互; + - Home 关键按钮与弹层; + - Settings/Favorites 基础可用性。 + +## 7. 验收清单与交付物 + +### 7.1 页面级验收清单 + +- 布局完整:无重叠、无错位、无异常黑边; +- 文案可读:不截断(可接受预期截断场景需说明); +- 交互可用:触控面积合理、按钮不被遮挡; +- 状态一致:加载/空态/异常态显示正常; +- iPhone 回归:关键路径无变化。 + +### 7.2 交付物 + +- 每页适配说明(改动点 + 参数策略); +- iPad 改前/改后截图; +- iPhone 回归截图; +- Widget 各尺寸截图; +- 最终页面覆盖矩阵与验收记录。 + +## 8. 分阶段里程碑 + +1. **M1 基线搭建** + - 完成原生配置核查与适配基线工具/约定; + - 输出页面清单与验收模板。 + +2. **M2 页面逐页适配** + - 按既定顺序逐页改造; + - 每页交付后等待确认,再继续下一页。 + +3. **M3 Widget 收口** + - 完成 iPad 尺寸矩阵验证; + - 修复文本/间距/层级问题。 + +4. **M4 全量回归与发布前验收** + - iPad 全页验收 + iPhone 零回归确认; + - 形成最终验收文档。 + +## 9. 风险与应对 + +- **风险**:页面存在大量固定像素值,局部改动引发联动。 + **应对**:参数分层、按区块替换、单页冻结机制。 + +- **风险**:iPad 多窗口/舞台管理导致尺寸波动。 + **应对**:以竖屏全屏为主验收,同时保留窗口变化最小兼容策略。 + +- **风险**:多语言文案长度影响 widget 与页面稳定性。 + **应对**:统一截断/换行规则,增加长文案样本回归。 + diff --git a/spec_kit/iPad Adaptation/spec.md b/spec_kit/iPad Adaptation/spec.md new file mode 100644 index 0000000..9a30e69 --- /dev/null +++ b/spec_kit/iPad Adaptation/spec.md @@ -0,0 +1,92 @@ +# iPad Adaptation Spec + +## Background + +当前应用主要按 iPhone 体验实现,iPad 上存在以下问题: +- 页面布局在竖屏/横屏或不同窗口尺寸下出现留黑边、内容拥挤、元素比例失衡。 +- 各页面对 iPad 的适配策略不统一,样式行为不可预测。 +- iOS Widget 在 iPad 场景下缺少完整的尺寸与排版一致性规范。 + +本需求定义“全应用 iPad 适配”高层规范,覆盖客户端全部页面与 iOS 小组件,确保不回归现有 iPhone 体验。 + +## Goals + +1. 为客户端所有页面建立统一的 iPad 适配规范(优先竖屏,兼容 iPad 常见窗口模式)。 +2. 完成全部页面在 iPad 下的布局、间距、字号、交互可用性优化。 +3. 完成 iOS Widget 在 iPad 相关尺寸上的视觉与信息层级适配。 +4. 明确“iPad 适配不影响 iPhone”的约束、验收与回归策略。 + +## Non-Goals + +- 不重做品牌视觉与核心交互流程。 +- 不引入与 iPad 适配无关的新业务功能。 +- 不调整后端接口契约(除非为 Widget 展示字段做最小兼容补充)。 + +## Scope + +### In Scope + +- `client/app/` 下所有用户可见页面(启动、协议、onboarding、home、modal、not-found 等)。 +- 共享组件与页面级组件在 iPad 场景下的布局策略(容器宽度、断点、字号、触控面积、safe area 处理)。 +- iPad 竖屏主流程视觉一致性与可用性。 +- iOS Widget(小/中/大尺寸)在 iPad 的展示、文本截断、间距与点击目标。 +- iPad 相关工程配置核查(如设备家族支持、方向策略与运行模式)。 + +### Out of Scope + +- Android 平板专项适配。 +- Web 端平板适配。 +- 新增 widget 类型或新增推荐策略。 + +## Core Requirements + +### R1. 统一适配基线 + +- 定义 iPad 判定与布局断点策略,避免各页面各自实现。 +- 页面默认使用“内容最大宽度 + 居中 + 弹性留白”模式,不出现视觉黑边误判。 +- 明确安全区、状态栏、底部操作区在 iPad 下的通用规则。 + +### R2. 页面逐页适配 + +- 按页面清单逐页交付,单页可独立验收。 +- 每页适配需覆盖:首屏构图、正文可读性、底部操作区、长文案换行与触控可用性。 +- 已完成页面进入“冻结状态”,未经确认不回改。 + +### R3. iPhone 零回归 + +- 所有 iPad 样式调整必须使用条件分支或断点方案,不修改 iPhone 基线参数。 +- 每次页面适配后执行 iPhone 快速回归(关键路径与关键组件)。 + +### R4. iOS Widget 适配 + +- 覆盖 iPad 下 widget 尺寸与展示密度差异,保证文本与图形不溢出、不遮挡。 +- 小组件与主 App 的主题、字体层级、文案截断策略保持一致。 +- 提供 widget 预览/截图验收基线(至少包含浅色模式)。 + +### R5. 验收与质量 + +- 建立页面级验收清单:布局完整性、可读性、点击可达性、状态一致性、异常文案表现。 +- 关键页面提供 iPad 对比截图(改前/改后)与 iPhone 回归截图。 +- 适配完成后输出覆盖清单,确保无遗漏页面。 + +## Acceptance Criteria + +1. 应用在 iPad 真机/模拟器上以 iPad 模式运行,不出现 iPhone 兼容模式导致的系统黑边。 +2. 全部页面在 iPad 竖屏下通过视觉与交互验收,页面无明显错位、截断、重叠。 +3. iPhone 主流尺寸下关键路径无样式与交互回归。 +4. iOS Widget 在 iPad 对应尺寸下通过展示验收。 +5. 提供最终“页面覆盖矩阵 + 验收记录”。 + +## Risks + +- 现有页面存在大量固定像素值,逐页改造可能引入局部联动风险。 +- iPad 多窗口/舞台管理会带来额外窗口尺寸变化,需要明确支持级别。 +- Widget 文案长度受多语言影响,需预留截断与回退策略。 + +## Milestones (High-Level) + +1. 基线与清单:完成断点策略、页面与组件清单、验收模板。 +2. 页面适配:按“启动链路 -> onboarding -> 主页面 -> 弹层/边缘页面”逐页交付。 +3. Widget 适配:完成尺寸验证与视觉一致性收口。 +4. 全量回归:iPad 全页检查 + iPhone 零回归确认 + 发布前验收。 + diff --git a/spec_kit/iPad Adaptation/task.md b/spec_kit/iPad Adaptation/task.md new file mode 100644 index 0000000..4337e58 --- /dev/null +++ b/spec_kit/iPad Adaptation/task.md @@ -0,0 +1,151 @@ +# iPad Adaptation(任务清单) + +> 说明:本清单由 `plan.md` 拆解,强调“详细、可执行、可验收”。 +> 执行规则:完成后将 `- [ ]` 改为 `- [x]`;阻塞项需补充阻塞原因与解除条件。 +> 约束:所有 iPad 改动不得影响 iPhone 现有适配。 + +## 0. 基线与准备 + +- [ ] **T0-1 建立页面与组件盘点清单** + - 输出:`client/app/` 页面清单 + 关键共享组件清单(含负责人/优先级) + - 验收:清单覆盖启动链路、onboarding、home、settings、favorites、modal、not-found + +- [ ] **T0-2 建立验收模板(页面级)** + - 输出:统一验收模板(布局、文案、交互、状态、iPhone 回归、截图) + - 验收:模板可用于每页独立签收 + +- [x] **T0-3 建立 iPad 适配基线工具函数/约定** + - 内容:统一 `isTablet` 判定、宽度分级(560/620/680)、容器基线写法 + - 验收:至少在 1 个页面实际接入并可复用 + +## 1. 原生配置修正(黑边先决条件) + +- [x] **T1-1 修正 iOS 目标设备族为 iPhone+iPad** + - 文件:`client/ios/client.xcodeproj/project.pbxproj` + - 要求:主 App target(Debug/Release)`TARGETED_DEVICE_FAMILY` 包含 `1,2` + - 验收:iPad 运行不再是 iPhone 兼容模式 + +- [x] **T1-2 校验方向策略与产品要求一致(优先竖屏)** + - 文件:`client/app.json`、`client/ios/client/Info.plist` + - 要求:iPad 方向策略与“竖屏优先”一致,不引入系统级黑边 + - 验收:iPad 竖屏全屏显示稳定 + +- [ ] **T1-3 设备验证(基础冒烟)** + - 场景:iPad 模拟器(至少 11-inch)+ iPhone 两档尺寸 + - 验收:启动页无系统黑边,应用可正常进入主流程 + +## 2. 启动链路页面适配(第一批) + +- [x] **T2-1 适配 `app/(splash)/splash.tsx`(同意页)** + - 范围:首屏构图、文案可读、底部按钮区、安全区 + - 要求:iPad 使用独立参数分支,iPhone 参数保持不变 + - 验收:iPad 竖屏无错位、无遮挡;iPhone 对比无回归 + +- [x] **T2-2 适配 `app/index.tsx`(启动分发页)** + - 范围:加载态容器尺寸、跳转前视觉稳定性 + - 验收:iPad 下不闪烁、不出现异常留边 + +- [ ] **T2-3 启动链路验收与冻结** + - 输出:iPad 改前/改后截图 + iPhone 回归截图 + - 验收:产品确认后标记“冻结”,不再改动本批页面 + +## 3. Onboarding 全流程适配(第二批) + +- [x] **T3-1 适配 `components/onboarding/OnboardingLayout.tsx`** + - 范围:标题区、进度区、内容最大宽度、顶部操作区 + - 验收:iPad 竖屏布局层级清晰,交互区域可达 + +- [x] **T3-2 适配 `components/onboarding/NameInputStep.tsx`** + - 范围:输入卡片宽度、键盘抬升、底部按钮区 + - 验收:iPad 输入过程不卡位、不遮挡按钮 + +- [x] **T3-3 适配 `components/onboarding/SelectionStep.tsx`** + - 范围:选项卡宽度/间距、滚动区底部留白、底部按钮区 + - 验收:末项可见且不被按钮覆盖 + +- [x] **T3-4 适配 `components/onboarding/ReminderStep.tsx`** + - 范围:数字区比例、加减按钮间距、完成按钮区域 + - 验收:iPad 读数清晰,触控误触率低 + +- [x] **T3-5 适配 `app/(onboarding)/onboarding.tsx`(流程壳)** + - 范围:步骤切换稳定性、loading 态布局一致性 + - 验收:全流程在 iPad 竖屏可连续通过 + +- [ ] **T3-6 Onboarding 批次验收与冻结** + - 输出:逐页截图 + 关键交互录屏(可选) + iPhone 回归截图 + - 验收:确认后冻结本批页面 + +## 4. 主应用页面适配(第三批) + +- [x] **T4-1 适配 `app/(app)/home.tsx`** + - 范围:卡片区、顶部入口、底部操作、空/加载状态 + - 验收:iPad 信息层级清晰,无文本溢出 + +- [ ] **T4-2 适配 Home 相关弹层组件** + - 范围:`components/home/` 下弹层、设置卡片、协议入口弹窗 + - 验收:弹层在 iPad 下尺寸与点击区合理 + +- [ ] **T4-3 适配收藏/设置相关页面与入口** + - 范围:Favorites、Settings 及关联子组件 + - 验收:列表与信息卡在 iPad 下无拥挤/空旷失衡 + +- [ ] **T4-4 主应用批次验收与冻结** + - 输出:关键页面截图 + 回归记录 + - 验收:产品确认后冻结 + +## 5. 边缘页面与通用组件适配(第四批) + +- [x] **T5-1 适配边缘路由页面** + - 范围:`modal`、`+not-found`、其他辅助页 + - 验收:iPad 下无明显样式异常 + +- [ ] **T5-2 清理固定像素高风险点** + - 范围:扫描固定宽高/绝对定位集中区域,替换为分支参数 + - 验收:高风险点清单完成闭环 + +- [ ] **T5-3 通用组件收口** + - 范围:复用组件(如 Sheet、按钮、卡片容器)统一 iPad 参数 + - 验收:跨页面表现一致 + +## 6. iOS Widget iPad 适配 + +- [ ] **T6-1 盘点 Widget 展示尺寸与当前问题** + - 范围:Small/Medium/Large 在 iPad 下的展示差异 + - 验收:输出问题矩阵(文字溢出/留白/层级) + +- [ ] **T6-2 调整 Widget 排版参数** + - 范围:边距、字号、行高、文本截断策略 + - 验收:各尺寸均无溢出、无遮挡、层级清晰 + +- [ ] **T6-3 多语言长文案回归** + - 范围:至少 TC/EN 长短文案样本 + - 验收:不同语言下展示稳定 + +- [ ] **T6-4 Widget 验收截图归档** + - 输出:各尺寸截图(浅色模式必选) + - 验收:可用于最终发布验收材料 + +## 7. 全量回归与发布前验收 + +- [ ] **T7-1 iPad 全页面走查** + - 范围:按页面清单逐项验证布局/交互/状态 + - 验收:无 P0/P1 视觉与交互问题 + +- [ ] **T7-2 iPhone 零回归冒烟** + - 范围:启动、onboarding、home、settings、favorites、关键弹层 + - 验收:关键路径行为与样式无回归 + +- [ ] **T7-3 输出最终覆盖矩阵与验收记录** + - 输出:页面覆盖表、问题清单、处理结论、剩余风险 + - 验收:可直接作为发布前审阅材料 + +## 8. 收尾与文档同步(全部完成后执行) + +- [ ] **T8-1 更新 `spec_kit/overview.md` 对应条目** + - 要求:新增 `iPad Adaptation` 小节,记录目标、范围、阶段产物、完成状态 + - 验收:`overview.md` 可一眼看出该需求“任务已全部执行完毕” + +- [ ] **T8-2 标记本文件完成状态** + - 要求:`task.md` 全部条目改为 `[x]`,并在文件顶部补“已完成日期/负责人” + - 验收:任务清单闭环 + -- 2.49.1 From 22443c82b6f47adaddc5e2810e97938e08796028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=96=B0=E9=9B=A8?= Date: Thu, 12 Mar 2026 18:02:25 +0800 Subject: [PATCH 19/19] =?UTF-8?q?fix:APP-push=E7=82=B9=E5=87=BB=E6=96=87?= =?UTF-8?q?=E6=A1=88=E6=98=BE=E7=A4=BAhome=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/app.json | 1 + client/app/(app)/home.tsx | 78 ++++++++++++-- client/app/_layout.tsx | 44 +++++++- client/ios/client/Info.plist | 2 +- .../__tests__/pushNotificationRoute.test.ts | 77 ++++++++++++++ client/src/services/pushNotificationRoute.ts | 100 ++++++++++++++++++ client/src/storage/appStorage.ts | 48 +++++++++ server/app/api/v1/push.py | 12 ++- server/app/features/push_payload.py | 26 +++++ server/app/tasks/push.py | 8 +- server/tests/test_push_payload.py | 32 ++++++ spec_kit/overview.md | 2 + 12 files changed, 414 insertions(+), 16 deletions(-) create mode 100644 client/src/services/__tests__/pushNotificationRoute.test.ts create mode 100644 client/src/services/pushNotificationRoute.ts create mode 100644 server/app/features/push_payload.py create mode 100644 server/tests/test_push_payload.py diff --git a/client/app.json b/client/app.json index c39bae6..3691e13 100644 --- a/client/app.json +++ b/client/app.json @@ -15,6 +15,7 @@ }, "ios": { "supportsTablet": true, + "requireFullScreen": true, "bundleIdentifier": "com.damer.mindfulness" }, "android": { diff --git a/client/app/(app)/home.tsx b/client/app/(app)/home.tsx index ddefc23..d4031d4 100644 --- a/client/app/(app)/home.tsx +++ b/client/app/(app)/home.tsx @@ -5,6 +5,7 @@ import { Text, Pressable, PanResponder, + AppState, Animated as RNAnimated, ImageBackground, Platform, @@ -29,6 +30,8 @@ import { getUserProfile, setReaction, setThemeMode, + clearPendingHomePushMessage, + getPendingHomePushMessage, getRecoFeedCache, setRecoFeedCache, getUserProfileScoring, @@ -41,6 +44,7 @@ import { } from '@/src/storage/appStorage'; import { fetchRecoFeed } from '@/src/services/recoApi'; +import { subscribeHomePushMessage } from '@/src/services/pushNotificationRoute'; import { toBackendLocaleFromLanguageTag } from '@/src/i18n/locale'; import ProfileModal from '@/components/home/ProfileModal'; @@ -109,6 +113,7 @@ export default function HomeScreen() { const [busy, setBusy] = useState(false); const [likeFilled, setLikeFilled] = useState(false); const [feedItems, setFeedItems] = useState([]); + const [pendingPushItem, setPendingPushItem] = useState(null); const [isFetching, setIsFetching] = useState(false); const [cardWidth, setCardWidth] = useState(null); const [wrappedText, setWrappedText] = useState(''); @@ -119,6 +124,24 @@ export default function HomeScreen() { const likedIdsRef = useRef>(new Set()); const likeInFlightRef = useRef(false); + const applyPendingPushItem = useCallback(async (message: { notification_id: string; content_id?: number; text: string }) => { + const nextItem: FeedItem = { + content_id: message.content_id != null ? String(message.content_id) : `push:${message.notification_id}`, + text: message.text, + }; + setPendingPushItem(nextItem); + indexRef.current = 0; + setIndex(0); + setLikeFilled(likedIdsRef.current.has(String(nextItem.content_id))); + await clearPendingHomePushMessage(); + }, []); + + const consumePendingPushItem = useCallback(async () => { + const pendingMessage = await getPendingHomePushMessage(); + if (!pendingMessage?.text) return; + await applyPendingPushItem(pendingMessage); + }, [applyPendingPushItem]); + useEffect(() => { busyRef.current = busy; }, [busy]); @@ -187,14 +210,25 @@ export default function HomeScreen() { // 统一文案对象结构 const currentFeed = useMemo(() => { - if (feedItems.length > 0) { - return feedItems; + const baseFeed = + feedItems.length > 0 + ? feedItems + : MOCK_CONTENT.map(item => ({ + content_id: item.id, + text: t(item.textKey) + })); + + if (!pendingPushItem) { + return baseFeed; } - return MOCK_CONTENT.map(item => ({ - content_id: item.id, - text: t(item.textKey) - })); - }, [feedItems, t]); + + return [ + pendingPushItem, + ...baseFeed.filter((entry) => ( + String(entry.content_id) !== String(pendingPushItem.content_id) && entry.text !== pendingPushItem.text + )), + ]; + }, [feedItems, pendingPushItem, t]); useEffect(() => { currentFeedRef.current = currentFeed; }, [currentFeed]); @@ -381,13 +415,20 @@ export default function HomeScreen() { useCallback(() => { let cancelled = false; (async () => { - const mode = await getThemeMode(); - const profile = await getUserProfile(); - const cache = await getRecoFeedCache(); + const [mode, profile, cache, pendingMessage] = await Promise.all([ + getThemeMode(), + getUserProfile(), + getRecoFeedCache(), + getPendingHomePushMessage(), + ]); if (cancelled) return; setThemeModeState(mode); setProfileName(profile.name); + if (pendingMessage?.text) { + await applyPendingPushItem(pendingMessage); + if (cancelled) return; + } // 随心:若当前主题为随心,进入 Home 时确保状态就绪(仅冷启动会话重算) if (mode === 'suixin') { @@ -415,9 +456,24 @@ export default function HomeScreen() { return () => { cancelled = true; }; - }, [fetchNewFeed, recoLang, ensureSuixinReady]) + }, [applyPendingPushItem, fetchNewFeed, recoLang, ensureSuixinReady]) ); + useEffect(() => { + const unsubscribe = subscribeHomePushMessage((message) => { + void applyPendingPushItem(message); + }); + return unsubscribe; + }, [applyPendingPushItem]); + + useEffect(() => { + const sub = AppState.addEventListener('change', (state) => { + if (state !== 'active') return; + void consumePendingPushItem(); + }); + return () => sub.remove(); + }, [consumePendingPushItem]); + const backgroundColor = useMemo(() => { if (themeMode === 'suixin') { return suixinBgColor; diff --git a/client/app/_layout.tsx b/client/app/_layout.tsx index 5da97d7..defd7da 100644 --- a/client/app/_layout.tsx +++ b/client/app/_layout.tsx @@ -1,7 +1,7 @@ import FontAwesome from '@expo/vector-icons/FontAwesome'; import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native'; import { useFonts } from 'expo-font'; -import { Stack } from 'expo-router'; +import { Stack, useRouter } from 'expo-router'; import * as SplashScreen from 'expo-splash-screen'; import * as Notifications from 'expo-notifications'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; @@ -11,7 +11,8 @@ import { Animated, AppState, Image, StyleSheet, View } from 'react-native'; import { useColorScheme } from '@/components/useColorScheme'; import { initI18n } from '@/src/i18n'; import { ensureDailyWidgetRecoUpToDate, syncWidgetConfig, syncWidgetUserProfileFromStorage } from '@/src/modules/dailyWidgetReco'; -import { getOrCreateClientUserId } from '@/src/storage/appStorage'; +import { getConsentAccepted, getOnboardingCompleted, getOrCreateClientUserId } from '@/src/storage/appStorage'; +import { persistHomePushMessageFromResponse } from '@/src/services/pushNotificationRoute'; import { ensurePushTokenRegisteredIfPermitted } from '@/src/services/pushApi'; // 配置通知处理方式(即使不发送也建议配置,以确保权限接口正常) @@ -149,6 +150,7 @@ export default function RootLayout() { function RootLayoutNav() { const colorScheme = useColorScheme(); + const router = useRouter(); useEffect(() => { // iOS 小组件:启动时把必要信息写入共享区,并尽力刷新一次“每日推荐” @@ -165,6 +167,44 @@ function RootLayoutNav() { return () => sub.remove(); }, []); + const handleNotificationResponse = useCallback( + async (response: Notifications.NotificationResponse) => { + const message = await persistHomePushMessageFromResponse(response); + if (!message) return; + + const [consentAccepted, onboardingCompleted] = await Promise.all([ + getConsentAccepted(), + getOnboardingCompleted(), + ]); + if (consentAccepted && onboardingCompleted) { + router.replace('/(app)/home'); + } + }, + [router] + ); + + useEffect(() => { + let cancelled = false; + + Notifications.getLastNotificationResponseAsync() + .then((response) => { + if (cancelled || !response) return; + return handleNotificationResponse(response); + }) + .catch(() => { + // ignore:通知冷启动读取失败不阻塞主流程 + }); + + const sub = Notifications.addNotificationResponseReceivedListener((response) => { + void handleNotificationResponse(response); + }); + + return () => { + cancelled = true; + sub.remove(); + }; + }, [handleNotificationResponse]); + return ( diff --git a/client/ios/client/Info.plist b/client/ios/client/Info.plist index 9b2806b..f8f63a2 100644 --- a/client/ios/client/Info.plist +++ b/client/ios/client/Info.plist @@ -60,7 +60,7 @@ arm64 UIRequiresFullScreen - + UIStatusBarHidden UIStatusBarStyle diff --git a/client/src/services/__tests__/pushNotificationRoute.test.ts b/client/src/services/__tests__/pushNotificationRoute.test.ts new file mode 100644 index 0000000..be85f6f --- /dev/null +++ b/client/src/services/__tests__/pushNotificationRoute.test.ts @@ -0,0 +1,77 @@ +import { describe, expect, it, vi } from 'vitest'; + +vi.mock('../../storage/appStorage', () => ({ + getLastHandledNotificationId: vi.fn(async () => null), + setLastHandledNotificationId: vi.fn(async () => undefined), + setPendingHomePushMessage: vi.fn(async () => undefined), +})); + +import { buildPendingHomePushMessageFromResponse } from '../pushNotificationRoute'; + +describe('pushNotificationRoute.buildPendingHomePushMessageFromResponse', () => { + it('能从每日推荐 push payload 提取 home 文案', () => { + const result = buildPendingHomePushMessageFromResponse({ + notification: { + request: { + identifier: 'notif-1', + content: { + title: '每日推荐', + body: '先用通知正文兜底', + data: { + scene: 'push', + target_screen: 'home', + home_text: '点击推送后回到首页展示这句文案', + content_id: '42', + }, + }, + }, + }, + }); + + expect(result).toMatchObject({ + notification_id: 'notif-1', + title: '每日推荐', + text: '点击推送后回到首页展示这句文案', + content_id: 42, + scene: 'push', + }); + }); + + it('home_text 缺失时回退到通知正文', () => { + const result = buildPendingHomePushMessageFromResponse({ + notification: { + request: { + identifier: 'notif-2', + content: { + body: '直接展示通知正文', + data: { + target_screen: 'home', + }, + }, + }, + }, + }); + + expect(result?.text).toBe('直接展示通知正文'); + expect(result?.notification_id).toBe('notif-2'); + }); + + it('非 home 目标且非 push 场景时忽略', () => { + const result = buildPendingHomePushMessageFromResponse({ + notification: { + request: { + identifier: 'notif-3', + content: { + body: '这条不应该进入首页', + data: { + target_screen: 'profile', + scene: 'other', + }, + }, + }, + }, + }); + + expect(result).toBeNull(); + }); +}); diff --git a/client/src/services/pushNotificationRoute.ts b/client/src/services/pushNotificationRoute.ts new file mode 100644 index 0000000..2e948ee --- /dev/null +++ b/client/src/services/pushNotificationRoute.ts @@ -0,0 +1,100 @@ +import { + getLastHandledNotificationId, + setLastHandledNotificationId, + setPendingHomePushMessage, + type PendingHomePushMessage, +} from '../storage/appStorage'; + +type NotificationContentLike = { + title?: string | null; + body?: string | null; + data?: Record | null; +}; + +export type NotificationResponseLike = { + notification?: { + request?: { + identifier?: string; + content?: NotificationContentLike; + }; + }; +}; + +type HomePushListener = (message: PendingHomePushMessage) => void; + +const homePushListeners = new Set(); + +function readString(value: unknown): string | undefined { + if (typeof value !== 'string') return undefined; + const trimmed = value.trim(); + return trimmed ? trimmed : undefined; +} + +function readContentId(value: unknown): number | undefined { + if (typeof value === 'number' && Number.isFinite(value)) { + return Math.trunc(value); + } + if (typeof value === 'string' && value.trim()) { + const parsed = Number(value); + if (Number.isFinite(parsed)) return Math.trunc(parsed); + } + return undefined; +} + +function notifyHomePushListeners(message: PendingHomePushMessage): void { + for (const listener of homePushListeners) { + listener(message); + } +} + +export function subscribeHomePushMessage(listener: HomePushListener): () => void { + homePushListeners.add(listener); + return () => { + homePushListeners.delete(listener); + }; +} + +export function buildPendingHomePushMessageFromResponse( + response: NotificationResponseLike +): PendingHomePushMessage | null { + const request = response.notification?.request; + const content = request?.content; + const data = + content?.data && typeof content.data === 'object' && !Array.isArray(content.data) + ? content.data + : {}; + + const targetScreen = readString(data.target_screen); + const scene = readString(data.scene); + const shouldOpenHome = targetScreen === 'home' || scene === 'push'; + if (!shouldOpenHome) return null; + + const text = readString(data.home_text) ?? readString(content?.body); + if (!text) return null; + + return { + notification_id: readString(request?.identifier) ?? `push-${Date.now()}`, + received_at: new Date().toISOString(), + text, + title: readString(content?.title), + content_id: readContentId(data.content_id), + scene, + }; +} + +export async function persistHomePushMessageFromResponse( + response: NotificationResponseLike +): Promise { + const message = buildPendingHomePushMessageFromResponse(response); + if (!message) return null; + + const lastHandledNotificationId = await getLastHandledNotificationId(); + if (lastHandledNotificationId === message.notification_id) { + return null; + } + + await setPendingHomePushMessage(message); + await setLastHandledNotificationId(message.notification_id); + notifyHomePushListeners(message); + return message; +} diff --git a/client/src/storage/appStorage.ts b/client/src/storage/appStorage.ts index ea505da..c1c5fc4 100644 --- a/client/src/storage/appStorage.ts +++ b/client/src/storage/appStorage.ts @@ -21,6 +21,8 @@ const KEY_DAILY_REMINDER_SETTINGS = 'dailyReminder.settings'; const KEY_PUSH_LAST_REGISTERED_TOKEN = 'push.lastRegisteredToken'; // 旧:仅 token(保留兼容读取) const KEY_PUSH_LAST_REGISTERED_AT = 'push.lastRegisteredAt'; // 旧:时间(保留兼容) const KEY_PUSH_LAST_REGISTERED_PAYLOAD = 'push.lastRegisteredPayload'; // 新:token+client_user_id+env+app_id +const KEY_PUSH_PENDING_HOME_MESSAGE = 'push.pendingHomeMessage'; +const KEY_PUSH_LAST_HANDLED_NOTIFICATION_ID = 'push.lastHandledNotificationId'; export type PushPromptState = 'enabled' | 'skipped' | 'unknown'; export type Reaction = 'like' | 'dislike'; @@ -112,6 +114,52 @@ export async function setLastRegisteredPushPayload(payload: Omit { + const raw = await AsyncStorage.getItem(KEY_PUSH_PENDING_HOME_MESSAGE); + if (!raw) return null; + try { + const obj = JSON.parse(raw) as Partial; + if (!obj || typeof obj !== 'object') return null; + if (!obj.notification_id || !obj.received_at || !obj.text) return null; + return { + notification_id: String(obj.notification_id), + received_at: String(obj.received_at), + text: String(obj.text), + title: obj.title ? String(obj.title) : undefined, + content_id: Number.isFinite(obj.content_id) ? Number(obj.content_id) : undefined, + scene: obj.scene ? String(obj.scene) : undefined, + }; + } catch { + return null; + } +} + +export async function setPendingHomePushMessage(message: PendingHomePushMessage): Promise { + await AsyncStorage.setItem(KEY_PUSH_PENDING_HOME_MESSAGE, JSON.stringify(message)); +} + +export async function clearPendingHomePushMessage(): Promise { + await AsyncStorage.removeItem(KEY_PUSH_PENDING_HOME_MESSAGE); +} + +export async function getLastHandledNotificationId(): Promise { + const raw = await AsyncStorage.getItem(KEY_PUSH_LAST_HANDLED_NOTIFICATION_ID); + return raw ? String(raw) : null; +} + +export async function setLastHandledNotificationId(notificationId: string): Promise { + await AsyncStorage.setItem(KEY_PUSH_LAST_HANDLED_NOTIFICATION_ID, String(notificationId)); +} + export type RecoFeedCacheItem = { content_id: number; text: string; diff --git a/server/app/api/v1/push.py b/server/app/api/v1/push.py index 3a14821..cc52999 100644 --- a/server/app/api/v1/push.py +++ b/server/app/api/v1/push.py @@ -16,6 +16,7 @@ from app.db.models.push_preference import PushPreference from app.db.models.push_token import PushToken from app.db.models.push_send_log import PushSendLog from app.db.session import get_db +from app.features.push_payload import build_home_push_data from app.features.user_profile_scoring.types import UserProfileV1_2 from app.worker import celery_app @@ -289,7 +290,16 @@ async def test_push( title = req.title or "Dear Mama" body = req.body or "这是一条测试推送(dev)。" - expo_res = await _send_expo_push(to=token.push_token, title=title, body=body, data={"client_user_id": req.client_user_id}) + expo_res = await _send_expo_push( + to=token.push_token, + title=title, + body=body, + data=build_home_push_data( + client_user_id=req.client_user_id, + body=body, + scene="push", + ), + ) _ = accept_language return {"status": "ok", "expo": expo_res} diff --git a/server/app/features/push_payload.py b/server/app/features/push_payload.py new file mode 100644 index 0000000..569f7d2 --- /dev/null +++ b/server/app/features/push_payload.py @@ -0,0 +1,26 @@ +from __future__ import annotations + +from typing import Any, Optional + + +def build_home_push_data( + *, + client_user_id: str, + body: str, + scene: str = "push", + content_id: Optional[int] = None, +) -> dict[str, Any]: + """ + 构建客户端点击通知后回到 Home 所需的最小 payload。 + """ + + data: dict[str, Any] = { + "client_user_id": str(client_user_id), + "scene": str(scene), + "target_screen": "home", + "deep_link": "client://home", + "home_text": str(body), + } + if content_id is not None: + data["content_id"] = int(content_id) + return data diff --git a/server/app/tasks/push.py b/server/app/tasks/push.py index d902caa..962b851 100644 --- a/server/app/tasks/push.py +++ b/server/app/tasks/push.py @@ -16,6 +16,7 @@ from app.db.models.push_preference import PushPreference from app.db.models.push_send_log import PushSendLog from app.db.models.push_token import PushToken from app.db.session import AsyncSessionLocal +from app.features.push_payload import build_home_push_data from app.features.personalized_reco.content_repository.types import normalize_locale from app.features.user_profile_scoring.scoring import build_user_profile_from_questionnaire from app.features.user_profile_scoring.types import QuestionnaireAnswersV1_2, UserProfileV1_2 @@ -365,7 +366,12 @@ async def _send_once_async(*, client_user_id: str, local_date: date, slot_index: to=str(token.push_token), title=title, body=body, - data={"client_user_id": client_user_id, "scene": "push"}, + data=build_home_push_data( + client_user_id=client_user_id, + body=body, + scene="push", + content_id=picked_content_id, + ), ) # 6) 解析 Expo 回执,必要时停用 token diff --git a/server/tests/test_push_payload.py b/server/tests/test_push_payload.py new file mode 100644 index 0000000..67d4baf --- /dev/null +++ b/server/tests/test_push_payload.py @@ -0,0 +1,32 @@ +from __future__ import annotations + +from app.features.push_payload import build_home_push_data + + +def test_build_home_push_data_contains_home_route_fields() -> None: + payload = build_home_push_data( + client_user_id="client-123", + body="今天也请温柔地对自己说话。", + scene="push", + content_id=9, + ) + + assert payload == { + "client_user_id": "client-123", + "scene": "push", + "target_screen": "home", + "deep_link": "client://home", + "home_text": "今天也请温柔地对自己说话。", + "content_id": 9, + } + + +def test_build_home_push_data_omits_content_id_when_missing() -> None: + payload = build_home_push_data( + client_user_id="client-123", + body="先看到这句,再回到首页。", + ) + + assert "content_id" not in payload + assert payload["target_screen"] == "home" + assert payload["home_text"] == "先看到这句,再回到首页。" diff --git a/spec_kit/overview.md b/spec_kit/overview.md index 57f4c59..ee56d66 100644 --- a/spec_kit/overview.md +++ b/spec_kit/overview.md @@ -49,6 +49,8 @@ - ETA 发送任务(幂等:同一用户同一天同一 slot 只发一次;用户中途关闭/降次数会跳过) - 发送文案复用推荐模块 `scene="push"`(降风险) - 后端:`pytest` 全量通过(27 passed) + - 客户端:新增通知点击消费链路,支持前后台/冷启动点击每日推荐 Push 后,将文案暂存并在进入 `home` 时优先展示 + - 后端:每日推荐 Push payload 新增 `target_screen/home_text/content_id/deep_link`,保证客户端点击通知后可恢复首页展示上下文 ## Project Bootstrap -- 2.49.1