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] =?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