采用「统一移入 TopBar + 自动包裹 right slot」的方案:
CapsuleSafeArea.vue 组件,基于 uni.getMenuButtonBoundingClientRect() 计算胶囊安全宽度,以 wrapper 形式给 slot 内容加 margin-left。TopBar.vue 内部自动用 CapsuleSafeArea 包裹 right slot,页面无需感知安全区。TaskListView 从自定义 header 重构为使用 TopBar;ScheduleView 的「今天」「新增排班」均移入 TopBar right slot。uni.getMenuButtonBoundingClientRect() 可能获取失败,使用基于屏幕宽度的估算值兜底。npm run type-checknpm run build:mp-weixin将回写 openspec/changes/weapp-capsule-safearea/specs/weapp-capsule-safearea/spec.md:
TopBar。ScheduleView 中「今天」和「新增排班」均移入 TopBar right slot。CapsuleSafeArea 采用 wrapper 形式给 slot 内容加 margin-left。