更新换行算法和APP-PUSH

This commit is contained in:
吕新雨
2026-02-10 11:39:33 +08:00
parent f03d36b5e9
commit ee2d9f44ea
105 changed files with 9967 additions and 233 deletions

View File

@@ -90,6 +90,86 @@
- 清理未接入编译的 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 的问题)
## Text Wrap
- **目标**:将 Home 与 Widget 的文案换行算法从 UI 中独立成可复用模块,输出稳定、可控、可解释的换行结果(同输入同输出)
- **核心范围**`wrapText()` 纯函数入口、TC/EN token 口径与索引体系、候选断点生成、DP/Beam 搜索、硬约束/评分/tie-break、溢出与兜底、debug meta 与 Golden Cases
- **阶段产物**
- `spec_kit/Text Wrap/spec.md`
- **已完成编码(阶段性)**core-contract核心口径与契约
- **已完成编码(阶段性)**grapheme-segmentationTC 字符簇分割)
- **已完成编码(阶段性)**width-measurement宽度测量与降级
- **修复**`measureSliceWidthCached` 的切片缓存 key 增加 `sliceText` hash避免不同文本的相同 `(start,end)` 发生串缓存
- **已完成编码(阶段性)**breakpoint-candidates候选断点生成与裁剪
- **变更文件**
- `client/src/features/textWrap/breakpoints/types.ts`
- `client/src/features/textWrap/breakpoints/enCandidates.ts`
- `client/src/features/textWrap/breakpoints/tcCandidates.ts`
- `client/src/features/textWrap/breakpoints/filterAndDedup.ts`
- `client/src/features/textWrap/breakpoints/generateBreakpoints.ts`
- `client/src/features/textWrap/breakpoints/index.ts`
- `client/src/features/textWrap/breakpoints/__tests__/generateBreakpoints.test.ts`
- `spec_kit/Text Wrap/modules/breakpoint-candidates/plan.md`
- `spec_kit/Text Wrap/modules/breakpoint-candidates/tasks.md`
- **已完成编码(阶段性)**scoring-tiebreak评分模型与确定性裁决
- **变更文件**
- `client/src/features/textWrap/scoring/types.ts`
- `client/src/features/textWrap/scoring/weights.ts`
- `client/src/features/textWrap/scoring/lexicons.ts`
- `client/src/features/textWrap/scoring/phraseMatch.ts`
- `client/src/features/textWrap/scoring/score.ts`
- `client/src/features/textWrap/scoring/tieKey.ts`
- `client/src/features/textWrap/scoring/index.ts`
- `client/src/features/textWrap/scoring/__tests__/scoringTiebreak.test.ts`
- `spec_kit/Text Wrap/modules/scoring-tiebreak/plan.md`
- `spec_kit/Text Wrap/modules/scoring-tiebreak/tasks.md`
- **已完成编码(阶段性)**search-engine-appAPP 搜索器DP + TopK
- **变更文件**
- `client/src/features/textWrap/searchApp/types.ts`
- `client/src/features/textWrap/searchApp/topK.ts`
- `client/src/features/textWrap/searchApp/constraints.ts`
- `client/src/features/textWrap/searchApp/dpTopK.ts`
- `client/src/features/textWrap/searchApp/index.ts`
- `client/src/features/textWrap/searchApp/__tests__/searchApp.test.ts`
- `spec_kit/Text Wrap/modules/search-engine-app/plan.md`
- `spec_kit/Text Wrap/modules/search-engine-app/tasks.md`
- `client/src/features/textWrap/measure/measureSliceWidthCached.ts`
- **已完成编码(阶段性)**search-engine-widgetWIDGET 搜索器Beam Search
- **变更文件**
- `client/src/features/textWrap/searchWidget/types.ts`
- `client/src/features/textWrap/searchWidget/topK.ts`
- `client/src/features/textWrap/searchWidget/constraints.ts`
- `client/src/features/textWrap/searchWidget/beam.ts`
- `client/src/features/textWrap/searchWidget/index.ts`
- `client/src/features/textWrap/searchWidget/__tests__/searchWidget.test.ts`
- `spec_kit/Text Wrap/modules/search-engine-widget/plan.md`
- `spec_kit/Text Wrap/modules/search-engine-widget/tasks.md`
- **已完成编码(阶段性)**overflow-fallback溢出与兜底
- **变更文件**
- `client/src/features/textWrap/overflow/types.ts`
- `client/src/features/textWrap/overflow/ellipsis.ts`
- `client/src/features/textWrap/overflow/fallback.ts`
- `client/src/features/textWrap/overflow/index.ts`
- `client/src/features/textWrap/overflow/__tests__/overflowFallback.test.ts`
- `spec_kit/Text Wrap/modules/overflow-fallback/plan.md`
- `spec_kit/Text Wrap/modules/overflow-fallback/tasks.md`
- **已完成(阶段性)**golden-testsGolden Cases 与性质测试)
- **变更文件**
- `client/src/features/textWrap/golden/fixtures.ts`
- `client/src/features/textWrap/golden/__tests__/golden.test.ts`
- `spec_kit/Text Wrap/modules/golden-tests/plan.md`
- `spec_kit/Text Wrap/modules/golden-tests/tasks.md`
- **已完成编码(阶段性)**integrationHome / Widget 接入)
- **变更文件**
- `client/src/features/textWrap/types.ts`
- `client/src/features/textWrap/wrapText.ts`
- `client/src/features/textWrap/index.ts`
- `client/src/features/textWrap/__tests__/wrapText.integration.test.ts`
- `spec_kit/Text Wrap/modules/integration/plan.md`
- `spec_kit/Text Wrap/modules/integration/tasks.md`
- **接入情况**
- HomeAPP已在 `client/app/(app)/home.tsx` 接入 `wrapText()` 渲染 `wrappedText`(含 `\n`
## Splash Consent
- **目标**:实现开屏页(使用 `client/assets/images/index/` 图片资源),首次加载展示渐变同意按钮并提供隐私/协议入口