8c25d5fc74
feat(首页头图): 孕25周换母婴作图 v6 GIF——宝宝背对镜头、脐带更明显 (v26093016)
...
- 素材换母婴作图 v6(替代 v5 的 mp4):卡通动漫风宝宝背对镜头不露脸,脐带从囊壁右上方垂下、全程不动;
画幅从 1280×736 变 16:9。
- 背景 = v6 静帧缩 .88、截取块中心 (656,360) 摆到 (1240,375),囊完整不裁;
<video> 换成 <img>:原 GIF 截 450×450 整高块(含宝宝全部动作),object-fit:cover 铺满 .hero-baby,
首帧和背景对齐误差 ≈3.7(GIF 抖动噪点级)。加载完淡入,没加载出来停在静帧。
- 宝宝不露脸了,嘴边的小气泡连同样式一起去掉;底色兜底 #df856a。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 16:02:41 +00:00
488989d82c
feat(首页头图): 孕25周换母婴作图 v5——不规则羊水囊、去胎盘、囊壁细脐带 (v26093015)
...
- 素材换母婴作图 v5(替代 v4):羊水囊改不规则有机形状,去掉囊顶胎盘,
脐带从囊壁右上方细细淡淡垂向宝宝身前、全程不动;宝宝吸手指时头部 ±15px 低头抬头。
- v5 的囊比 v4 的圆宽,背景缩放 .93→.90、囊心摆到 (1240,375),囊右缘不再被切;
叠加视频以囊心 (661,381) 截 660×660→400×400,54KB;.hero-baby 摆位按新几何重算,
首帧和背景对齐误差 ≈2.4(压缩噪点级)。嘴边气泡起点跟着挪到新嘴位。底色兜底 #de8868。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 13:47:20 +00:00
05ce51300e
feat(首页): 新增「宝宝消消乐」游戏推广入口 (v26093014)
...
- 工具托盘正下方一张糖果色大卡:「新游戏」角标 + 名字 + 玩法一句话 + 跳动的「开始玩」,
右侧 3×3 待产用品小棋盘循环演示三连消除,角上星星闪烁。
- 点击走 jumpApp() 跳 https://beian3.douba.top/myxx/index.html(游戏由「母婴消消」维护 ,
不需要身份参数,多带无害);GAME_URL 为空时整块隐藏。
- 动效在 prefers-reduced-motion 下关闭;页面隐藏时棋盘动画暂停。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 13:29:07 +00:00
9a1ad1fb93
feat(首页): 新增「孕期小知识」和「妈妈的树洞」两个模块 (v26093013)
...
孕期小知识(工具区下方):
- 按真实孕周 + 天数显示「今日小知识」大卡,右上角本周水果 emoji 缓慢浮动;
底部 7 个圆点 = 本周第 1–7 天,今天高亮呼吸、以前可回看、以后锁着(明天见)。
- 四张马卡龙小卡:宝宝这周(带大小比喻)/ 妈妈身体 / 吃点什么 / 这周留心,进入视口依次浮上来。
- 内容 assets/data/preg-tips.json:孕 4–40 周,每周 4 句 + 每天 1 条,共 259 条,按需 fetch。
- 只在 /pregnancy 确认真实孕周后显示(pregEmpty === false 且非产后),不拿默认孕周配内容。
妈妈的树洞(今日脚印下方):
- 心事只存本机 localStorage(mmbox.treehole.v1,最多 200 条),不上传;按用户选定不做回应,
只有纸团飞进树洞 + 树冠晃动 + 「已收好」动画;可展开「我的心事」回看、删除。
- 出现明显轻生字眼时,在「已收好」下加一行 12356 心理援助热线(兜底);卡底常驻一行求助提示。
动效在 prefers-reduced-motion 下关闭。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 13:23:00 +00:00
9ea9f3c50f
feat(首页): 新增「孕期每日小打卡」——按钮带状态小标签 (v26093012)
...
- 首页正文最上面加一块「孕期每日小打卡」:数胎动 / 称体重 / 产检三行,
每行右侧一枚状态标签,点整行进对应应用(复用 data-mini + MINI_APP_MAP + jumpApp)。
- 标签来自工具卡同一个接口(applyRemoteCards → renderDaily),不另打请求:
今日已记 N 次 / 今天还没记;今日已称 / 今天还没称(按接口 day 判今天);
距 NT 还有 7 天 / 今天糖耐检查 / 待补记 / 看产检安排。
抬头右端「今日已完成 x/2」(只数胎动、体重两件每日事)。
- 接口没回、访客态保留中性提示,不写数字;产后态整块收起。
- 首块间距规则改为 .home-body>:first-child,工具托盘并入块间 16px。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 13:10:04 +00:00
62b23af323
feat(首页头图): 孕25周换 v4 用户确认版——胎盘在囊顶、胎发、颜色回调 (v26093011)
...
- 素材换母婴作图 v4(用户已在作图会话确认画面):颜色比 v3 深一档(囊外 #DB8263~#E38E6E),
胎盘移到囊顶、脐带从上方细细垂下、接肚子端被腿挡住;头部重画带细软胎发;浮动 ≤7px。
- 背景、囊视频按同一流程重做(囊心 667,368),视频 66KB;底色兜底改 #de8968。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 13:04:51 +00:00
bca92312f8
feat(首页头图): 孕25周宝宝换 Q 版卡通、整体提亮 (v26093010)
...
- 素材换母婴作图 v3:Q 版卡通宝宝(圆脸、闭眼笑、粉嫩,无写实纹理),浅暖桃底;
脐带/胎盘固定、无孕肚、镜头固定、正倒放首尾同帧等 v2 要求保留,整体晃动已防抖。
- 背景、囊视频按同一流程重做(囊心 664,368),视频 74KB。
- 背景变浅,左侧压字暖色层 .14→.20,底色兜底改 #eaa485。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 10:33:19 +00:00
983191a752
feat(首页头图): 换母婴作图 v2 孕25周视频——脐带连囊壁胎盘、镜头固定、暖底 (v26093009)
...
- 素材 yun25w-loop.mp4 v2:胎盘在囊内壁左下,脐带全程固定,接肚子那头被腿挡住;
无孕肚;镜头固定;本身正放+倒放首尾同帧,直接 loop。
- 背景 = 视频第 1 帧缩 .93、囊心摆 (1250,375),左/上/下按边缘色补齐并宽羽化(455d2517fafd.jpg)。
- 视频只截羊水囊 660×660 → 400×400(f20175ae1170.mp4,95KB),宽羽化遮罩叠在背景同位置;
与背景同源同帧,边缘无缝。去掉单独的静态囊图层。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 10:10:45 +00:00
d5ee5c8654
fix(首页头图): 羊水囊边缘和外部背景柔和过渡,去掉割裂感 (v26093008)
...
- 静态囊图边缘改为 r232→300 平滑羽化,底图在囊外加一圈很柔的暖光,把囊壁化进底色。
- 去掉 .hero-sac 的 CSS 椭圆遮罩(横竖半径不同,把囊壁左右削掉、上下留着,是割裂的主因)。
- 视频遮罩放宽为 74%→96%,和静态囊壁柔和叠合,镜头推近时也不出边。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 09:30:17 +00:00
9bb3c5a533
feat(首页头图): 背景改暖桃橙,和羊水同色调顺下来 (v26093007)
...
- 头图底子从暗紫玫瑰改成取自囊内羊水的暖桃橙渐变,光晕和散景光点同步改暖、调淡;
左侧天数卡那块也是同一色调。压字渐变改成很淡的暖色(.14)。
- 静态囊图按新底子重新合成(视频不变)。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 09:23:51 +00:00
f21af1e25b
feat(首页头图): 羊水囊不再动,改成囊里的宝宝自己动(吸手指、蹬腿) (v26093006)
...
- 去掉整层浮动和整图「胎动」扭动(用户:球不要动,要里面的宝宝动)。
- 母婴作图的 25w.mp4 取前 10s,只截囊内 600×600,正放 + 倒放拼成 20s 无缝循环,
400×400 / 288KB(assets/video/b6476cfce328.mp4),遮罩只露囊内,叠在静态囊图上。
- 静态囊图换成视频第 1 帧(70812d56ec5f.jpg),视频淡入时画面对得上;放不了就停在静态图。
- 微信 iOS 等 WeixinJSBridgeReady 再 play();页面隐藏时暂停;减少动态效果下不放。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 09:20:13 +00:00
b69a02e570
chore(首页): 先关掉顶部「未获取到微信身份」黄色提示条 (v26093005)
...
产品要求先不展示。只在 showIdNotice() 入口加开关 ID_NOTICE_ENABLED=false,
判定逻辑、标记、重试按钮都保留;没身份时改为 console.warn,排查不受影响。
恢复展示:把开关改回 true。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 09:16:30 +00:00
d2c04194fa
feat(首页头图): 宝宝单独成层,加「胎动」——时不时扭一下、蹬一下 (v26093004)
...
- 头图拆两层:散景光点底子 7dfe5be4e828.jpg(背景,不动)+ 羊水囊宝宝 bc6367fcad38.jpg
(从同一张合成图原样切出,按橙区高 H 换算摆回原位,径向遮罩羽化边缘)。
- 外壳慢浮 6s;图片「胎动」7.3s 一轮:大半时间静止,突然小幅转动 + 位移,随后再轻蹬一下。
两个周期错开,不像固定节拍。嘴边气泡挂在同一层,跟着宝宝一起动。
- prefers-reduced-motion 下全部停住。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 09:14:27 +00:00
a0119760ed
feat(首页头图): 去掉孕肚、宝宝缩小、左侧提亮,四周改散景光点 (v26093003)
...
- 孕肚弧线太写实(用户反馈有巨物感),只从原图抠出羊水囊 + 宝宝,缩到约 8 成放在右侧。
- 底子按原图色调重铺紫玫瑰渐变,比上一版亮;囊后一圈柔和暖光晕保留包裹感,周围散景光点。
- 左侧压字渐变从 .5 降到 .22,明显变浅。
- 嘴边气泡锚点按新图重新定位(右 0.408H、顶 0.491H)。
- 新图 assets/img/ab3c7e20811a.jpg(1560×750,59KB),替换上一版预览图 4cd9891cec31.jpg。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 08:01:18 +00:00
44e20cb0c3
feat(首页头图): 孕25周整图铺成头图背景,左侧顺原图色调延伸 (v26093002)
...
- 橙色渐变底 + 右上角圆形宝宝图 → 整张孕25周图(孕肚弧线 + 羊水囊宝宝)作 .home-hero 背景,
右对齐、高度=头图高;左侧按原图左缘色调横向补出暗粉紫,屏宽 ≤520 都铺得满。
叠一层左深右透渐变压住孕肚亮边,保证左侧白字可读。头图高度 250 与底部椭圆弧不变。
- 去掉右上角圆形图(上一版预览的 dd05df88ab23.png)和三团橙色光斑;
嘴边气泡改挂在零尺寸锚点上,按背景图里嘴的位置定位,不再整体浮动。
- 新图 assets/img/4cd9891cec31.jpg(1560×750,84KB)。旧正式图 b00c707f7b1f.png 保留。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 07:45:05 +00:00
12fcc037dc
feat(首页头图): 顶部宝宝主图换成孕25周图 (v26093001)
...
原图 25w-original.png(1536x864 横图,来自母婴作图)以羊水囊为中心裁 760x760 正方形,
套圆形透明遮罩后缩到 379x379,与旧图同尺寸(显示宽 189.5px 的 2 倍图),头图布局账不变。
文件名按规则取内容 md5 前 12 位;旧图 b00c707f7b1f.png 保留,避免缓存着旧 HTML 的用户图裂。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 01:48:41 +00:00
d0fcc1e988
fix(今日脚印): 判据改用 used —— 「用过但没留下记录」不再错显示「还没有脚印」(v26092219)
...
接口方 2026-09-23 排查回复纠正了我方一处真实口径错误(原话:lead 只在当天 used 为空时才有值;
你们 H5 是用 results 是否为空判断的,建议改用 used 是否为空;used 非空但没 results 时显示应用名列表即可)。
我方原来的逻辑:`events.length ? rows : guide` —— events 来自 results,于是「今天用过应用但没留下记录」
的日子会走引导,页面上就出现「还没有脚印」与气泡里那句「今天用了 1 个工具,还没有留下具体记录。」
自相矛盾(用户截图里正是这个现象)。
改动:
- 分支判据改为 `used`:used 空 → 引导(含上游查无此人);used 非空 → 时间轴。
- 时间轴补「用过但没留下记录」的应用行:按 first_at(收口成北京 HH:MM 的 used[].at)出一行
「13:37 孕检日历」,与真实记录行按时间合并排序、最多 8 行。
- 引导芯片改用上游带回的 `url`(2026-09-23 起它只推我们已上架的应用、并带 url,
接口方原话「有 url 就直接跳,不用再对 App 表」);App 表只作兜底,identifier 仍用于 last_app 上报。
本地验证(桩后端五种返回):rows→事件行;**usedonly→应用行 09:10 数胎动 / 13:37 孕检日历,且不再出现引导**;
guide→上游 lead + 可点芯片;degraded / 接口 500→整块不显示。无 JS 异常。
2026-09-23 03:36:57 +08:00
bef4b02040
chore(mama-box): 补 v26092218 的 VER bump —— 上一提交漏了 js/app.js,导致 V 与 VER 不同步
2026-09-23 01:02:59 +08:00
77fb75796d
feat(今日脚印): AI 气泡改说真话 —— 文案取接口 digest,引导取 lead+unused (v26092217)
...
配合 box_app 的 B 方案(今日脚印换源到数胎动用户面 /user/daily/footprint)。
接口现在一次给全:事件 + digest(气泡文案)+ lead/unused(引导),于是首页不用再编数据。
- **AI 气泡**:文案由 fpRender() 从 `digest.text` 写入(真实文案,宝宝口气的 AI 句子),
`digest.warn` 为真时整句标红(.ai-warn)。取不到 digest 就整颗气泡收起。
⚠️ index.html 里那句写死的「妈妈,今天你数到我动了 3 次…」已删除 —— 它对任何用户都显示,
而且把 today 的假次数和真实时间轴摆在同一屏。现在这条规则是 **data-driven**(有文案才显示),
不再靠"有没有事件"猜。
- **引导占位**:文案用接口的 `lead`(如「宝妈,先从这几件事记起吧。」),应用用 `unused[]` ——
能对上 App 表的渲染成**可点芯片**(点击 jumpApp 进该应用),对不上(如不在 App 表的宝宝来信)只显示名字。
- **三种显隐模式**(fpRender 是模块显隐的唯一 owner):
rows 拿到事件 → 时间轴;guide 一条都没有(上游查无此人 / kind=fallback 今天没活动 /
只浏览没产出记录)→ 引导;hide 接口读不到 / degraded → 整块不显示。
原来「有档案但今天没记」的「还没有足迹」空态并入 guide(上游的 lead + 推荐应用比一句空态有用)。
- 删掉不再使用的 emptyFootprintStep()。
本地验证(桩后端,五种返回 × 资料延迟):rows → 时间轴 + 气泡显示**真实 digest 文案**;
guide → 上游 lead + 芯片(数胎动/胎儿估重可点、宝宝来信纯文本);linked=false → 引导兜底标题;
degraded / 接口 500 → 整块不显示。全程无 JS 异常。
2026-09-23 00:19:00 +08:00
0f72863d10
fix(今日脚印): 未建档也显示引导 —— 去掉 pregEmpty 硬门槛 (v26092216)
...
产品口径(2026-09-22):未建档(没填孕产期)不再整块隐藏今日脚印,照接口结论显示 ——
无档案 → 引导占位(「还没有你的脚印 / 去「数胎动」记一笔…」)、有档案 → 事件或空态、
读不到 → 不显示。于是新用户首页也能看到"去记一笔"的引导。
- fpRender():删掉 `state.pregEmpty || state.postpartum` 那道硬门槛(原来未建档/产后一律不显示)。
- applyRemoteFootprint():删掉 `if (state.pregEmpty) { fpApply('hide') }` 那一跳。
- **AI 气泡的条件反而收紧**:只有「**已建档** + 拿到真实事件」才显示 —— 气泡里的次数是写死的
演示文案(「今天你数到我动了 3 次」),未建档时页面本来满屏占位,再挂一句假次数就是在说假话;
也避免出现「还没有足迹」与「动了 3 次」同屏矛盾。
本地全矩阵验证(桩后端 × 0.4s 资料延迟;四种接口结论 × 已建档/未建档):
已建档 rows→模块+事件+气泡 / empty→「还没有足迹」无气泡 / guide→引导无气泡 / degraded→隐藏
未建档 rows→模块+事件+**无气泡** / empty→「还没有足迹」无气泡 / **guide→引导无气泡** / degraded→隐藏
全程无 JS 异常。
2026-09-23 00:05:18 +08:00
d7410500cf
fix(加载顺序): 远程数据按依赖顺序取 —— 身份 → 资料(含上游同步)→ 应用数据 (v26092215)
...
产品口径:上游有档案且有预产期时,页面应按 ①身份(openid/unionid/phone) → ②用户资料
(box_app /profile,会从上游同步预产期/小名/宝宝名)→ ③应用数据(今日足迹等)这个顺序加载。
- applyRemoteProfile() 改为**返回 Promise**(访客分支与已跑过也返回已决议的 Promise),
init() 里改为 `Promise.race([applyRemoteProfile(), 10s 超时]).then(() => { 应用数据 })`:
显式等 ② 落地再取 ③(资料库/记录/内容、今日脚印、首页工具卡、来信未读)。
⚠️ 加兜底超时的原因:② 万一挂住(上游不响应),③ 也必须照常发出,别让首页空等。
⚠️ 原来这五个 fetch 一起发、谁先回来谁写 DOM —— 竞态都是这么来的(今日脚印整块显隐被
profile 回来后又翻回去;来信提示的红点与卡各写一份判据)。顺序化后两者都收敛。
为什么这条重要(与今日脚印的显隐口径直接相关):上游有预产期时,第 ② 步会把预产期同步进来
(方案 A:读时同步覆盖),state.pregEmpty 因此为 false → 今日脚印不会被「未建档」门槛挡住。
即「上游有档案且有预产期」与「mama-box 未建档」不会同时成立(除非第 ② 步失败/超时)。
本地验证(桩后端,profile 故意延迟 0.6s 以观察顺序):
已建档(上游有预产期)→ 请求顺序 profile/pregnancy 先、footprint/tool-cards/laixin 后,
今日脚印整块显示并渲染 2 条真实事件;未建档 → 同样先取资料,今日脚印按口径隐藏。均无 JS 异常。
2026-09-22 23:59:57 +08:00
dedce247e9
fix(今日脚印): 读不到不编数据 —— 四种显隐模式收口到 fpRender(唯一 owner)(v26092214)
...
产品口径(2026-09-22):
· **无档案**(上游查无此人 / 本地未关联)→ 显示引导占位(#tlGuide:「还没有你的脚印 /
去「数胎动」记一笔,这里就会长出你今天的脚印」)
· **有档案** → 必须从接口读;**读不到就不显示**(整块 .today-line 收起),不再回退演示行
改动:
- index.html:删掉 4 条**写死的演示行**(胎动 12 次 / 体重 58.2kg / 产检提醒 / 睡前散步 20 分钟)——
它们只在「接口读不到」时露出来,等于上游一抖页面就开始编数据。换成一行中性「正在获取今天的脚印…」
+新增 #tlGuide 引导块,并在注释里写明四种模式与判定。
- 新增 fpApply()/fpRender():模块显隐**只有一个 owner**(pending / rows / empty / guide / hide,
外加「未建档 / 产后」硬门槛优先于接口结论)。
⚠️ 之前 syncPregnancy 也直接改 .today-line 的 display,两个 owner 撞出竞态 —— 实测「有档案 +
上游故障(degraded)」会被 profile 回来后重新显示出来(该收起的没收起)。现在 syncPregnancy 两处
都只调 fpRender()。
- 没有真实事件时给 .today-line 挂 .no-ai,AI 气泡一并收起:那句「今天你数到我动了 3 次」是写死的
演示文案,今天没记 / 未关联 / 读不到时显示它就是在说假话。拿到真实事件时才显示气泡
(把那个数字接到真实次数属另一件事,等产品定文案)。
本地验证(桩后端,五种模式各跑一遍,并把 profile 延迟 1.5s 以复现前面那个竞态):
rows → 模块显示 + 真实事件 + 气泡显示;empty → 「还没有足迹」+ 无气泡;
guide → 引导块显示 + 时间轴收起 + 无气泡;degraded → **整块不显示**;
fail(接口 500) → **整块不显示**;未建档 → 整块不显示。全程无 JS 异常。
2026-09-22 23:48:44 +08:00
d1fff2c248
feat(首页卡): 5 张工具卡改读 box_app 封装的真实数据(接口优先、失败回退本地)(v26092213)
...
数据源:GET /api/mp/public/mama-box/tool-cards(box_app 封装数胎动平台的 app-cards,
H5 不直连上游、不持有 token)。此前这 5 张卡各自为政:数胎动读本地 records(mama-box 早就不自记
胎动,常年 0)、体重恒 `--`、孕检日历本地按预产期推算、数宫缩显本地孕周、胎儿估重静态文案。
- 新增 applyRemoteCards() / applyRemoteCardsFetch():按 `slot` 落 DOM
(kick→#kickTodayHome、fweight/curve→.mc-sub、weight→#weightVal、cal→#calNext);
上游字符串一律 textContent,**绝不用 innerHTML**(同 footprint 的写法)。
- 优先级 = **接口优先、失败回退本地**。两个来源并行返回、先后不定,所以用 cardsOwned 旗子定序,
而不是赌顺序:#kickTodayHome 让位给卡片接口;#calNext 让位(卡片接口与孕检日历应用同一套排期,
还支持"改过预约日以预约日为准");curve 卡写值后**摘掉 data-wk**,否则 syncStaticDates 的
[data-wk] 循环会把它覆盖回孕周。
- 卡片点击与名称仍以 App 表为准(MINI_APP_MAP + APP_BY_ID,AGENTS §4.4);接口的 appId/path 仅诊断
(上游 app_id 是 URL slug,与 identifier 刻意不同)。
- 版式:固定高度 bento 只留一个状态位 → `.bento .mc-sub` 单行省略;数宫缩那列文本宽仅 ≈73px,
有数据时改显紧凑 value(「4分12秒」,否则上游 text「最近间隔 4分12秒」会被省略掉数字);
孕检日历放宽到两行(过期未记时上游给「待补记 9月26日」,一行会把日期省掉)。
- 新增 `.mc-extra`:只有 kick / weight 两张有富余竖空间,用来放上游 sub
(「2 段 · 最近 13:00」/「较孕前 +11.7 kg · 9月22日」);fweight/cal/curve 是固定高度、放不下第二行,
注释写明要加得先重排 .bento 那笔高度账(158+10+64=232)。
- warn → `.is-warn` 标红(新增 --alert token):胎动偏低 / 宫缩达临产阈值 / 产检过期未记。
- 体重卡:有值时写 value + 小字 unit(不会出现「-- kg」),无值保持中性 `--`。
本地验证(无头浏览器 + 桩后端):接口成功 → kick=12(覆盖本地 records 的 3)、weight=58.7kg +
「较孕前…」、cal=9月26日、curve=4分12秒、kick 标红、无 JS 异常;接口 ok=false → 全部回退本地
(kick=3 / weight=-- / curve 恢复 data-wk),页面不变空。
2026-09-22 23:01:51 +08:00
06f76b4df4
feat(身份): 同源身份缓存兜底 —— H5「返回首页」裸跳不再丢 openid/unionid (v26092212)
...
问题(实测孕检日历,第三方应用):页面里的「返回首页」是**页面自己发起的同源跳转**,
宿主的 <web-view src> 属性没变 → _applyIdentity() 不触发 → mama-box 的 URL 上没有身份
→ 只能显示「身份不完整」;而 retryIdentity() 只是 location.replace(自己 + 缓存戳),
同一条没有身份的 URL 重载,**永远救不回来**。而且该应用会主动把 openid/phone 从自己的
URL 上擦掉(防分享链接冒名,理由见它的注释)—— 所以那一跳**不可能**带上身份。
做法(方案已与产品确认;在架 12 个应用实测全在 mp.yizhezhe.com,同源共享 storage):
- js/wx-auth.js:新增 identity()(URL 优先 → 同源 sessionStorage 兜底,命中缓存打一条
日志便于排查)、rememberIdentity()、goHome();并在**库载入时自动采一次**身份 ——
接入方无需改代码,只要引了本库(孕检日历就引了,且它是绝对地址 + ETag 兜底,
我们改库即可自动生效),宿主注入过的身份就会被存下来。
- js/app.js:hashParam() 对 openid/unionid 两键加同样的缓存回落(其余参数不受影响)。
三条纪律(写在 wx-auth.js 顶部,改前先读):
① URL 永远权威:URL 带 openid 就无条件覆盖缓存(否则切号/换人会串号);
② 只在本 origin 有效:外链应用读不到,所以「跳转要带身份」的规范不能删,缓存只兜底;
③ 只存 openid/unionid(身份键),不碰 token/手机号/昵称头像。
选 sessionStorage 而非 localStorage:同一次会话内够用,且随标签页结束即失效,暴露窗口小。
验证(本地同源:/app 模拟第三方页 + /mama-box 同一 origin):
模拟应用页自动写缓存 → 裸跳 /mama-box/ → 提示条不显示、日志出现、按缓存身份拉数据;
回归:无缓存且无身份 → 提示条照旧显示(fail-closed 保留);URL 带身份 → 缓存被写下且不显示提示条。
2026-09-22 21:36:52 +08:00
3ab8af2bf5
fix(来信提示): 未填孕产期不显示「宝宝来信」提示 —— 卡与红点同一次判定一起收 (v26092211)
...
产品口径(2026-09-22):**没填孕产期(pregEmpty)就不该出现宝宝来信提示**,
显示了不合理。这条**覆盖**了代码里原先那条决定(「来信与建档是两件事,故意不看
pregEmpty」)—— 那条当时是为了修「红点有、卡没有」,方向反了,见下。
做法:把首页卡与底 tab 红点收进**唯一渲染入口** renderLetterReminder(),用同一个
判据同时决定两处(pregEmpty 是硬门槛 → 建档后看 unread > 0 → 上游降级保持现状),
并把最近一次未读结果存进 _laixinUnread,供建档状态变化时重算:
· syncLaixinReminder():拿到结果后交给 render(不再自己 toggle 红点);
· syncPregnancy():未建档分支与建档分支各调一次 render。
于是无论 laixin 与 /profile 谁先回来,都收敛到同一结果(时序无关)。
顺带消掉上一版残留的竞态:此前红点与卡各写一份判据 —— laixin 先回来(亮红点 + 显示卡)、
/profile 后回来(只藏卡),就得到「红点有、卡没有」。现在同源同判。
另外把已不存在的 applyLaixinReminder() 的注释引用一并改掉(js + index.html 共 3 处)。
无头浏览器 + 桩后端实测(profile 延迟 0 / 1.5 / 3s,覆盖两种返回顺序):
未建档 unread=1 → 卡与红点**都无**(三档一致)
已建档 unread=1 → **都有**(确认没把建档用户一起关掉)
已建档 unread=0 → 都无
访客(无 openid)→ 都无
2026-09-22 21:20:46 +08:00
ab8a3a5ea0
fix(占位/来信): 工具卡演示占位归中性 + 档案屏空态 + 修来信「红点有、卡没有」(v26092210)
...
一、占位数据(新用户实测)
- 首页工具卡:孕期体重「58.2kg」是写死的演示值(后端也确无体重数据源,
GET /records 只给当日聚合)→ 改中性占位 '--';数胎动「今天 3 次」默认
3 在访客态/records 失败时没人覆盖 → HTML 默认 '--'、state.kickToday 改 0。
- 孕检日历 #calNext:init 先按内置默认(预产期=今天+3月 → 孕27周)写下
演示日期,而 pregEmpty 分支只清 [data-ga]/[data-wk] 两种钩子、**漏了它**
(它没有这两种属性),applyRemoteProfile 又提前 return → 假日期留在首页。
两条空态分支各补一行显式归 '--'。
- 档案屏「成长数据」:三张统计卡 + 体重曲线 + 双顶径/股骨长/腹围等测量值
全部无接口数据源,空态(未建档/产后)整块隐藏改显示引导;#favCount 从
写死的 18 改为按 DOM 里点亮的星标实时统计(18 与屏幕上的 6 张对不上)。
⚠️ 该屏真机到不了(go('archive') 无条件跳 chanjian-rili),属防御性改动。
- **明确不动**的两处真实数据,都已加注释防止再被当演示值删掉:
· 指南区「128 份孕育资料」= 后端准备总数(按孕周陆续发放,目前上架 8 份,
其余可扫码找小助手索要)——「数字与列表条数不符」是对的;
· 三张卡「12.8 / 20.4 / 9.6 万妈妈已领取」= 真实领取量(手工同步的静态文案)。
二、宝宝来信「tab 红点有、首页提醒卡没有」
根因:syncPregnancy 的未建档分支里那句 hideLetterCard() 只藏卡、**不动 #tabBadge**,
而它旁边的理由(「applyLaixinReminder 里也判 pregEmpty」)是错的 —— 后者明确
故意不看 pregEmpty(来信与建档是两件事,历史上加过一版就是这个症状)。
于是 laixin 先回来(亮红点 + 显示卡)、/profile 后回来(走该分支)时,卡被藏回去、
红点留下。定时复现:profile 延迟 1.5s 必现(卡内文案已写好却带 .hide,即「先显示后被藏」);
同时返回则正常。删掉那句后 0/1.5/3s 三档都一致;未读 0 与访客态仍两者都收。
2026-09-22 21:12:19 +08:00
307f6182e4
feat(记一下/顾问码): 隐藏未实现的「今天已使用」快捷区 + 顾问二维码换真图 (v26092207)
...
记一下弹层:
- 日期/「今天已记 N 条」那行 + 「今天已使用」快捷区(数胎动/孕期体重/胎心记录)
功能尚未实现、数据是写死的演示值,按要求先整体隐藏。
- 只挂 .tbd-hide,**不删 DOM**:js 里 $('#quickKick') 没有判空,且
#kickCount / #todayCount / #noteWhen 会被回填,删掉会直接抛错。
- dedupeApps 在快捷区隐藏时跳过:否则首个可见小标题会变成没有指代对象的
「其他孕期工具」;renderAppGrid 补写 data-toast,避免点「共 N 个」时退回
index.html 里写死的「共 16 个」。
企业微信顾问二维码:
- 占位 svg(is-stub)换成真图 assets/img/4834fe8d686a.png。
文件名 = 文件内容 md5 前 12 位,与该目录另外 34 张图一致(内容寻址,换码即换 URL)。
- .wx-qr 挂在元素本身、svg/img 通吃,CSS 未改;14px 圆角只裁到四角白色静默区,
切不到码点。
2026-09-22 20:25:58 +08:00
849cf7a521
feat(孕期): 产后态不再显示「孕 42 周」,改「宝宝已出生 N 天」(v26092205)
...
上游 journey_stage=postpartum / 有 baby_birth_date 时,后端 /pregnancy 返回 postpartum=true
且 week=null。H5 侧补齐:
- applyRemoteProfile:**先判 postpartum 再判 empty/week==null**
(产后返回体的 week 也是 null,落错分支会给已生产用户弹「完善孕期信息」)
- syncPregnancy:新增产后分支(文案集中在这里)
· hero:孕周位「已出生」+ 清空紧邻的「孕周」标签 + 出生天数 / 「来到这个世界」
· 我的孕期卡:宝宝已出生 N 天 · 记录宝宝的成长时光(进度 100%)
· 档案页:宝宝已出生 N 天 · 孕期陪伴已结束;[data-ga]/[data-wk] 归 '--'
- 拦住 syncPregnancy 之后按 state.week 重算的链(syncStaticDates):
week=null 会算出「看着正常但全错」的日期
- fillProfileForm:产后不再按已过的预产期回填「孕 42 周」,孕周两格留空并锁住
- renderPoster:week 为 null 时不再拼出「第 null 周档案」,退化成完整档案
⚠️ 文案(首页/孕期卡/档案页三处)如需调整只改 syncPregnancy 的产后分支
版本 v26092204 → v26092205
2026-09-22 13:37:05 +08:00
4c4c00f636
fix(档案): 保存资料失败要提示 —— 配合后端「先推上游、失败即 400 不落库」(v26092204)
...
后端方案 A:PUT /profile 改预产期/昵称时先推上游用户中心,推失败返回 400 且不落库。
原来这里 .then() 不看响应、.catch() 静默 —— 用户会以为保存成功,下次加载被上游值覆盖回去
("改了没生效")。现在:非 200 或网络失败都 toast 提示,且不触发 bustReload。
- §4 硬约定新增第 9 条,说明这个接口的失败语义,避免以后又把失败吞掉
- 版本 v26092203 → v26092204
2026-09-22 13:23:06 +08:00
2c55e6737e
fix(宿主恢复): 返回首页时清除 last_app —— 不再冷启动被送回刚退出的应用 (v26092203)
...
问题(用户实测):进入 H5 应用(如孕期血糖记录)→ 退回 mama-box 首页 →
再冷启动进小程序,又被送回那个应用。记录的是「最后进入的 H5 应用」,
用户已经回到首页了,首页才是最后待的地方 → 必须清掉。
- clearLastAppOnBackHome():DELETE /api/mp/public/last-app?openid=
- 只认「这次是返回回到本页」三种情形,**不能每次加载都清**(宿主恢复会把本页当返回落点加载,
那时清掉会毁掉刚用上的记录):
① bfcache 恢复 → 复用文件末尾已有的 pageshow 监听(persisted=true)
② 后退导致整页重载 → navigation.type === 'back_forward'(init() 里判)
③ 从应用页 location.href 回本页 → document.referrer 是 https://mp.yizhezhe.com/ <app>/
- 宿主恢复/落点那两次加载都是 navigate + referrer 空 → 不会误清
- 版本 v26092202 → v26092203
2026-09-22 11:56:25 +08:00
79c1971cd6
feat(宿主恢复): 支持 #norestore=1 —— 小程序首页壳已决策时不再自行恢复 (v26092202)
...
档 3:首页壳自己读 last_app 并直接进容器页(不加载 mama-box、无首页闪屏)。
此时 mama-box 只是它留在身后的「返回落点」,必须禁止再自行恢复 —— 否则
mama-box 会在容器页底下把落点也换成目标应用,back 回不到首页。
- 收到 #norestore=1:既不跳,也先用 sessionStorage 闸门占住,
免得后续宿主 ?t= 重载(不带该标记)时又跳一次
- 无该标记时行为不变:浏览器直访 / 首页壳取数失败回落加载时仍是兜底恢复
- 版本 v26092201 → v26092202
2026-09-22 05:19:07 +08:00
8c6b18c5e1
feat(宿主恢复): 换应用上报 last_app + 首屏恢复上次 H5 应用 (v26092201)
...
需求:小程序里进入某个 H5 应用后退出小程序,再次冷启动要恢复那个应用。
- jumpApp / goArchiveH5 跳转前 reportLastApp():navigator.sendBeacon 上报**净地址**
(实时、由浏览器保证投递,不依赖微信 postMessage 的延迟批量派发)
- init() 首屏 resumeLastApp():sessionStorage 一次性闸门内 GET /api/mp/public/last-app,
命中就带当前 openid/unionid location.replace 过去 —— 冷启动才恢复,
同一会话切回首页 tab / 宿主 ?t= 重载都不会再跳;replace 不留 history、back 不会来回弹
- 宫格 / 工具卡 / 宝宝来信 / 孕检日历入口补 identifier,便于服务端在架校验
- 抽出 withIdentity(),jumpApp 行为不变(身份仍走 query,不追加 hash)
- 版本 v26092009 → v26092201
2026-09-22 05:11:24 +08:00
3b70f63dce
fix(身份): bustReload 重载时拼回 hash —— 退出登录/首次完善资料后不再丢身份误报未获取身份 (v26092009)
2026-09-21 14:04:54 +08:00
932e42e050
fix(身份): 宿主未注入 openid 时给出可见提示 + jumpApp 带 __no_identity 标记 (v26092008)
...
背景(2026-09-20 线上排查):小程序首页壳拿不到 openid 时会**匿名加载**本页,
页面照常渲染但全是占位(孕周 `--`、档案查不到),而跳应用时 jumpApp 因为没有身份
就跳**裸 URL** —— 从商城返回首页加载本页时很容易被误判成「数据丢了」。
根因在小程序侧(App.vue 丢掉无 token 分支的 openid;首页壳没有像 web_view 那样的
silenceAuthNoLogin 兜底),H5 这侧先做**可见 + 可观测**两件缓解:
· 新增顶部提示条(#idNotice):仅在没有 openid 时显示,文案「未获取到微信身份,
页面数据可能不完整」;带「重试」按钮(location.replace 换 URL 重载,重试过一次后
文案升级为「请退出小程序后重新进入」,状态落 sessionStorage,活过那次跳转)。
有身份加载时(applyRemoteProfile 拿到 openid)自动隐藏。
⚠️ 刻意不做自动轮询/自动 reload:宿主只在它自己重设 web-view src 或 onShow 时注入身份,
页面自己刷同一 URL 并不会让身份出现,反而可能循环。
· jumpApp():一个身份都没有时显式带 `__no_identity=1` —— 目标应用能区分「宿主没注入身份」
与「参数被平台丢了」,nginx/后端日志里也能一眼查到(排查 openid 为空的关键指纹)。
验证(本地代理 + 浏览器):访客态提示可见且默认文案正确;有 openid 时隐藏;
点重试后 URL 变 `?t=…`、提示仍在且文案升级;点宫格:无身份 → `…/?__no_identity=1`,
有身份 → `?openid=…&unionid=…`(无标记);卡片/红点/资源库 8 份/弹窗/我的页/tab 顺序
全部回归正常,errors 与 console 为空。
2026-09-20 23:08:26 +08:00
340fc911b1
fix(工具列表): 去掉「排除授权示例」的前端过滤,应用可见性交由后台上下架决定 (v26092007)
...
原逻辑:loadPublishedApps() 里 `.filter(a => a.url && !/wx-h5-demo/i.test(a.url))`
单独屏蔽「H5应用授权示例」,于是已上架 14 个只显示 13 个。
去掉的两个理由:
1)同一份数据在别的端不一致 —— 商城小程序「我的应用」(myApps) 直接铺
/api/mp/apps 全量,没有任何过滤,所以那边能看到它;
2)mama-box 端要用这个应用排查「openid 为空」的场景,前端把它藏掉就没法从宫格进去。
现在只保留「必须有 url」这一条(没配链接的点了没反应),谁能出现完全由后台
「应用管理」的上架/下架(isPublished)人工决定;注释里写清了历史与「别在前端
重新引入名单」。顺带说明:原来那条过滤是按 URL 正则匹配的,本身就是脆的
(demo 换域名就自动失效)。
验证:本地代理实测宫格 14 个、含「H5应用授权示例」,标题「共 14 个 ›」;
点它 → https://mp.yizhezhe.com/wx-h5-demo/?openid=…(有身份) ;
无 openid 时 → https://mp.yizhezhe.com/wx-h5-demo/(正好是排查要的干净入口);errors 空。
2026-09-20 02:57:27 +08:00
31d153b513
refactor(来信): 彻底删除内置来信屏及全部功能代码,来信整体由第三方 laixin 承接(v26092006)
...
「宝宝来信」功能已全部由第三方应用 laixin(mp.yizhezhe.com/laixin/)承接,
mama-box 只保留两个入口/提醒,二者逻辑一行未改:
· 底 tab「宝宝来信」#tabLetter → openLetterApp() 跳 laixin
· 首页提醒卡 #homeLetter + 底 tab 红点 #tabBadge → syncLaixinReminder()/applyLaixinReminder()
(读 /api/mp/public/laixin/unread)
删除的界面:#screen-letter(来信列表屏)、#detailLetter(来信详情)、
#detailCard(来信分享卡)、#fabWrite(写回信钮)、#modalReply(回信弹窗)。
删除的代码:LETTERS 数据与 stampLetters/renderLetters/filterLetters/buildThread/
renderLetterDetail/openLetter/curLetter/kidText/kidEl、本地延迟投递队列全套
(store/pending、deliverDue、deliverBabyReply、deliverVoiceLetter、语音信)、
syncLetterCounts、信箱头像换图 pickBabyAvatar、回信提交、applyRemoteLetters
(H5 从此不再请求 box_app 的 /mama-box/letters)、滑动 order 里的 letter、
go() 里 #fabWrite 的开关、state.{unread,letterFilter,curLetter,replyCount,babyAvatar}
以及随之无调用方的 fillBaby()。
保留(删前逐个 grep 确认仍有调用方):babyWord()、backAt()(stampAiLogs 在用)、
el()(档案海报在用)、.segmented(档案页在用)、.letter-card(首页提醒卡在用)、
档案页「珍贵时刻」里仅以文案提及来信的装饰卡。
CSS:删掉来信专用规则块与随之失效的变量(--font-round 等);净变化 -2396/+93 行。
2026-09-20 02:47:24 +08:00
0f0af3533d
fix(首页): 来信卡不再看 mama-box 是否建档,与红点判据对齐(v26092005)
...
生产实测发现的漏子:某 openid 在 laixin 有 1 封未读(红点亮),但 mama-box
档案未建档(pregnancy empty → state.pregEmpty=true),而 applyLaixinReminder
里带了这个条件 → 卡不显示。于是又出现「红点说有新信、卡里没有」——
只是这次方向相反:是我自己加的判据把两处口径写歪了。
改法:卡只看 laixin 的未读数(与红点同一套判据),不再看 pregEmpty。
「档案未建档」和「宝宝来信里有没有信」本来就是两件事 —— 用户能从 laixin
收到信,未必在 mama-box 填过预产期。注释里写死了「别再加回来」。
验证:新增本地 mock 场景「laixin 未读=2 + pregnancy empty」→ 卡正常显示
(「小汤圆来信 / 有 1 封新信、1 条新回信 · 最近一封 今天 9:00」)且红点同亮;
访客(无 openid)仍收起。
2026-09-20 02:32:10 +08:00
ee04a26ba3
fix(首页): 来信卡数据源改为 laixin,与底 tab 红点统一(修两套数据不一致)(v26092004)
...
问题:底 tab 早已改跳 laixin、红点读 /api/mp/public/laixin/unread,但首页那张
「宝宝来信」卡仍由 pushLatestToHome() 按 LETTERS(box_app /mama-box/letters)驱动,
而那条线对多数用户是 0 封 —— 同一屏上会出现「红点说有新信、卡里什么都没有」。
改法(两者共用一个 laixin 未读结果):
- 新增 hideLetterCard() + applyLaixinReminder(r):unread>0 才显示,文案按
「N 封新信 / M 条新回信」组装并附「最近一封 <时间>」;归零收起;上游降级(ok:false)、
访客态、未建档一律收起(与角标同一套判据)
- syncLaixinBadge() → syncLaixinReminder():一次 fetch 同时落红点与首页卡(owner 唯一)
- 删除 pushLatestToHome() / lettersResolved / state.homeLetter / openDetail():
内置来信屏(#screen-letter)与其 /letters 数据仍在,但不再往首页推卡
- 首页卡点击改走 openLetterApp()(跳 laixin),与底 tab 同落点;卡不再打开内置详情
- 卡仍默认 .hide + #homeBody 默认 .no-letter(保住 §9 的不闪规则)
验证(本地四态 mock + 浏览器):
- laixin 未读=2 → 接口回来前 hidden,回来后显示「小汤圆来信 / 有 1 封新信、1 条新回信 ·
最近一封 今天 9:00」,红点同亮(同一次请求)
- 未读=0 → 全程收起;上游 ok:false → 冷启动收起、已显示则保持显示
- 访客(无 openid)→ 收起
- **box_app 来信有 1 封未读但 laixin 未读=0 → 首页卡仍收起**(内置屏照常渲染,互不影响)
- 点卡 → https://mp.yizhezhe.com/laixin/?openid=…&unionid=…;内置列表点开详情仍正常;errors 空
2026-09-20 02:31:19 +08:00
e29052f107
fix(首页): 来信卡默认收起,等 /letters 结果再决定显示 —— 修掉「先冒出来再缩回去」的闪烁 (v26092003)
...
现象:从商城切回首页加载 mama-box 时,先渲染出一张「宝宝来信/宝宝回信啦」卡
(用内置样例信 + 本地待投递队列拼的),几百毫秒后 /letters 回来说没有未读,
卡又缩回去,闪一下。
原因:卡在 index.html 里默认可见,pushLatestToHome() 是「先显示、数据回来再决定」;
而首屏渲染远早于 /letters。
改法(反过来:没确定之前一律不显示):
- index.html:#homeLetter 默认带 .hide、#homeBody 默认带 .no-letter(首屏按「无卡」排版,不跳)
- app.js:新增 lettersResolved 开关;pushLatestToHome() 在未确定、访客态(无 openid)、
或后端明确未建档(pregEmpty)时一律保持收起;applyRemoteLetters 的每条终态
(成功/空列表/接口挂/无身份)与 applyRemoteProfile 的访客分支都置位并重算
- 访客分支顺手补了一次 pushLatestToHome():此前清空 LETTERS 后没人重算,
那张卡会顶着一封已不存在的信留在首页
验证(本地 + 延迟代理四态,浏览器实测):
- 有建档 + 0 封信:全程 hidden(修的就是这个)
- 有建档 + 1 封未读:接口回来前 hidden → 回来后显示「小汤圆来信」
- 接口全挂:回退内置样例照旧显示(离线行为不变)
- 访客(无 openid):hidden
2026-09-20 02:02:47 +08:00
e9873040f3
mama-box: 角标改调 /api/mp/public/laixin/unread(接口命名规范)+ 版本 v26092002
...
按 box_app/docs/api-naming-convention.md:box_app 对外暴露某应用的数据一律走
/api/mp/public/<app>/<资源>,app 段 = App 表 identifier。原先调的是
/api/mp/public/mama-box/laixin/unread,与妈妈盒子自己的来信(mama-box/letters)
同处一个命名空间、容易混,已随之迁到 laixin 命名空间。
2026-09-20 01:48:16 +08:00
aa53d5c6e6
mama-box 9.19 需求: 资料弹窗去兑换码闸门、底tab改回宝宝来信、我的页卡片改兜爸心选商城 (v26092001)
...
资料详情页(需求 1.1/1.2):
- #modalWx 删掉兑换码输入框与「以后再说」「解锁全部资料」两颗按钮,is-gate/is-gift/is-done
三模式合并成单态(唯一出口是右上角 .modal-x);二维码下方文案改需求指定句
- 需求方确认「扫码加顾问 → 回复领资料 → 顾问直接发资料」,故「解锁」概念整体取消
死代码清理(D1 的连带):
- 删 PAN/PAN_DEFAULT 网盘链接表、panOf、WX_CODE/wxCodeOK、givePan、#modalPan 弹窗、
state.wxUnlocked/WXOK_KEY、syncUnlockCopy、fetchRemoteConfig
- 删「已领」整套:state.resGot/RESGOT_KEY/isGot/列表「已领 ✓」标与筛选 chip/详情页「再拿一次链接」
底 tab(需求 2,D2=C):
- 「兜爸心选」→「宝宝来信」,图标换回 ic-letter,点击改走 jumpApp 跳第三方 H5
mp.yizhezhe.com/laixin/(App 表 identifier=laixin,取不到时兜底硬编码)
- 红点 #tabBadge 挪回该 tab;角标数据源改为 box_app 封装的 /laixin/unread
(syncLaixinBadge,ok=false 时保持现状,不把红点抹掉)
其它:
- 我的页卡片「兜爸心选」→「兜爸心选商城」(需求 3)
- 内置来信屏 #screen-letter 与 box_app /letters 链路保留不动,但不再有底 tab 入口
2026-09-20 01:36:06 +08:00
d39e52cf4f
授权回传确定性修复:requestProfile/goAuth 跳授权页时把当前 H5 地址作 backUrl 带给授权页(navigateTo query 通道,不赌 postMessage 派发时机);版本 v26091901
2026-09-19 16:55:42 +08:00
627a819e46
底tab「兜爸心选」/「进入商城」落点改商城首页:小程序原装装修首页已恢复为 pages/index/mall(DIY 底部导航第2项),goMall 改 switchTab 该页并补 fail 提示;首页新增今日脚印(数胎动对外 API,box_app 封装,拉不到回退内置);版本 v26091802
2026-09-18 21:12:49 +08:00
3ddcfe3e43
应用宫格: 工具列表改按 seq 倒序(值大靠前,seq 相同按 no 倒序)
2026-09-17 23:48:47 +08:00
f99a4d59eb
mama-box: 接入共享 wx-auth.js,首屏/换页向小程序宿主上报 location(分享卡片深链同步);版本 bump v26091602
2026-09-17 21:34:27 +08:00
60bc63a870
mama-box 首页与底tab 第九批: 卡2 生长曲线→数宫缩(gongsuopinlv), 档案tab跳孕检日历, 来信tab改兜爸心选商城(购物袋图标+红点移到首页), 隐藏专属福利; 工具链接统一 mp 业务域名 (v26091601)
2026-09-16 16:34:28 +08:00
7868556042
wx-auth/wx-h5-demo: 授权与商城跳转加 fail 兜底提示; 修环境标签恒显「纯浏览器」; 调试面板转发 navigateTo/switchTab fail (demo v26090901)
2026-09-09 18:41:13 +08:00
1d0b780185
内容指纹缓存推广到 mama-box css/js/index(URL稳定去?v=, ETag+no-cache), 与共享库统一 (v26090817)
2026-09-08 12:06:15 +08:00
fc7160a4f2
落地A: 应用间跳转统一query-only(去hash与identityHash开关), 简化契约 (v26090816)
2026-09-08 11:55:35 +08:00
bd82944f18
身份注入支持 hash 开关: 应用 identityHash=false 时跳转只带 query 不追加#(修复baobao-yingji hash路由被破坏) (v26090815)
2026-09-08 11:49:08 +08:00