Skip to content

fix(mobile): 修复 iOS 左滑「选项」里删除与重命名无响应 - #4071

Merged
MagicLizi merged 2 commits into
makecindy:mainfrom
cofyc:fix/mobile-ios-session-options-dismiss
Sep 8, 2026
Merged

fix(mobile): 修复 iOS 左滑「选项」里删除与重命名无响应#4071
MagicLizi merged 2 commits into
makecindy:mainfrom
cofyc:fix/mobile-ios-session-options-dismiss

Conversation

@cofyc

@cofyc cofyc commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

这次改了什么

摘要

iOS 上左滑任务行 →「选项」→「删除任务」点了没有任何反应,确认弹窗不出现;
同一个 Sheet 里的「重命名任务」同样无响应。置顶 / 归档正常,会话详情页「…」里的
删除也正常,所以问题一直被当成偶发。

根因是 @expo/ui两个都叫 onDismiss 的回调语义不同,代码接错了那个。

iOS 不允许在 Sheet 关闭过程中 present 系统 Alert(会被吞掉),所以
useSessionListActions.ts 刻意把删除 / 重命名拆成两拍:先关 Sheet,把后续弹窗
存进 pendingSheetActionRef,等 Sheet 报告"我关完了"(onClosed)再弹。
onClosed 不触发 = 什么都不发生

而通用 @expo/ui BottomSheet 的 onDismiss 只由原生 onIsPresentedChange 派生,
原生 BottomSheetView.swift 里有一个防回环 guard:

.onChange(of: isPresented) { newIsPresented in
  if props.isPresented == newIsPresented { return }   // 吞掉事件
  props.onIsPresentedChange(["isPresented": newIsPresented])
}
关闭方式 本地 state vs props 事件 onClosed
用户下拉 / 点背板 SwiftUI 先改本地态,props 仍为 true → 不一致 派发
点菜单项(JS 置 visible=false) props 先变再驱动本地态 → 一致 被 guard 吞掉

点「删除任务」永远走第二行,所以 Sheet 滑走了、确认弹窗永远躺在 ref 里。
这不是 Expo 的 bug——guard 是防回环的,那个 onDismiss 语义就是"用户关的",
不是"关完了"。纯回调不触发,不抛错、无日志,typecheck 和单测都看不见。

改法:直接用 @expo/ui/swift-ui 的 BottomSheet,它把两个信号分开暴露:

  • onIsPresentedChange → 用户主动关闭,驱动 onClose
  • onDismiss → 对应 SwiftUI .sheet(onDismiss:),两种关闭方式都在 Sheet
    完全消失后触发,才是 onClosed 的正确挂点

内容 modifier(frame / padding / 拖拽把手 / fitToContents)与通用封装逐条对齐,视觉不变。

引入于 #3500——该 commit 同时把 iOS Sheet 换成 @expo/ui,又把删除从立即弹
Alert 挪进了延迟路径,两个改动叠加才暴露。

变更类型

  • fix 缺陷修复

范围

  • 关联 Issue / 需求:无(用户报告"手机上删不掉被控电脑的任务")
  • 本 PR 包含:SessionOptionsExpoSheet.tsx 的 iOS Sheet 关闭时序修复 + 回归测试
  • 明确不包含:Android 路径(SessionActionSheet,本来就正常)、会话详情页
    SessionMenuSheet(走 RN SheetModal,不受影响)、device-link / 被控端写库链路
    (invoke 往右全程正常,请求压根没离开手机)
  • 用户可见变化:iOS 左滑「选项」里的删除重命名恢复可用
  • 是否存在 breaking change:无

UI 变化

  • 引用的设计规范:不涉及——本次只改 Sheet 的关闭事件接线,不改布局、
    尺寸、颜色与文案。内容 modifier(frame / padding /
    presentationDragIndicator / fitToContents)按通用封装的原值逐条复刻,
    渲染结果与改动前一致。已在模拟器 Light / Dark 双模式实机目检确认外观未变。

怎么验证的

自动验证

pnpm test:unit:related
结果:PASS(apps/mobile unit),exit 0

pnpm --filter mobile run --if-present typecheck
结果:通过,exit 0

pnpm check:dco
结果:DCO check passed: 1 commit signed off

新增回归测试 apps/mobile/src/__tests__/sessionOptionsExpoSheet.test.ts:
钉死 iOS 路径必须用 swift-ui BottomSheet,且 onClosedonDismiss 驱动、
不再挂在 onIsPresentedChange 上。改前该测试失败,改后通过。

手工验证

平台:iOS 26.5 iPhone 17 Pro 模拟器,iOS development client(非 Expo Go、
非分发包),bundle id com.xd.cindy(Global)。

pnpm mobile:sim:whoami -- --region=global → PASS:booted dev client、本 worktree 的
8081 Metro、源码指纹三者一致(fix/mobile-ios-session-options-dismiss@77ccdc239+68f7b40dde)。
worktree:.cindy-worktrees/mobile-ios-delete-session;新建 dev client 由
pnpm mobile:sim:rebuild 产出(原装机为 7 月构建,缺 ExpoNetwork 原生模块)。

A/B 对照(同一台设备、同一条 Maestro flow、同一个任务行):

代码 点「删除任务」 结果
改前(main 版本) 确认弹窗不出现 断言失败,复现用户报告
改后 确认弹窗正常弹出 flow 通过

端到端真实删除(不碰任何真实数据): 在手机端新建一次性任务
「throwaway session delete test」(7c9e8853),左滑 →「选项」→「删除任务」→
确认弹窗指名该任务 → 点「删除」→ 列表行消失。被控端数据库核对:

sqlite3 …/Cindy/cindy-*.db
  select id, title, status from sessions where id='7c9e8853-…';
→ 7c9e8853-…|throwaway session delete test|deleted

即写入真的落到了被控端,不只是控制端的乐观更新。

重命名:改后同一个 Sheet 里点「重命名任务」可正常打开
home.renameSession.modal(改前的负向对照未单独跑,见下)。

双模式:Light / Dark 均实机目检 Sheet 外观,布局与危险色一致。

未执行的验证

  • 重命名的改前负向对照未跑:A/B 只对删除做了。重命名与删除共用同一条
    pendingSheetActionRef 延迟路径(代码层面同因),但我只验证了"改后可用"。
  • 未跑 pnpm test:all / E2E 全量:改动只落在一个 iOS-only 展示组件,
    最终以 CI 门禁为准。
  • Android 未实机验证:该平台走 SessionActionSheet,本 PR 未触碰其代码路径。

风险

风险分类

  • 跨平台差异

影响与回滚

  • 影响范围:仅 iOS 左滑「选项」Sheet(SessionOptionsExpoSheet)。Android 分支
    提前 return 到 SessionActionSheet,零改动。
  • 不触发冷更:未动 apps/mobile/package.json 依赖与 scripts、app.json /
    app.config.jseas.json production 段、plugins/modules/@expo/ui
    版本未变,只是从包内 . 子路径改用 ./swift-ui 子路径导入,不改变 runtime
    fingerprint,存量装机可经 OTA 拿到。已按规则实测比对(ci-fingerprint.mjs compute
    改动前后各跑一次),两次逐字节一致:
    ios b69c311c6098a3adc4fc67bc0d9ef3410619ea05 / android eded6b21982ef138c322702a95d8ec7b534de4d6
  • 回滚方式:git revert 单个 commit 即可,无数据迁移、无持久化状态。
  • 存量插件影响:无。

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s)
  • UI 改动已在「UI 变化」注明(此处为"不涉及 + 理由")
  • 未提交凭证、令牌或授权文件
  • 已补充必要文档(改动理由写进了组件头注释)
  • 已确认测试结果或说明未执行原因

iOS 上左滑任务行 →「选项」→「删除任务」点了没有任何反应,确认弹窗不出现;
「重命名任务」同样无响应。置顶 / 归档正常,会话详情页的删除也正常。

根因是 `@expo/ui` 两个同名 `onDismiss` 的语义差异。iOS 不允许在 Sheet 关闭
过程中 present 系统 Alert,所以 useSessionListActions 把删除 / 重命名拆成两拍:
先关 Sheet,把后续弹窗存进 pendingSheetActionRef,等 Sheet 报告关闭完成
(onClosed)再弹。而通用 `@expo/ui` BottomSheet 的 onDismiss 只由原生
onIsPresentedChange 派生,原生 BottomSheetView.swift 里有防回环 guard:

    if props.isPresented == newIsPresented { return }

用户下拉 / 点背板时 SwiftUI 先改本地 state、与 props 不一致,事件照常派发;
而点菜单项是 JS 把 isPresented 置 false,props 先变再驱动本地 state,两者
一致 → 事件被 guard 吞掉。onClosed 永不触发,存好的确认弹窗永远不弹,且
不抛错、无日志,typecheck 与单测都看不见。置顶 / 归档不走延迟路径,所以幸存。

改为直接使用 `@expo/ui/swift-ui` 的 BottomSheet,它把两个信号分开暴露:
onIsPresentedChange 表示用户主动关闭(驱动 onClose),onDismiss 对应 SwiftUI
`.sheet(onDismiss:)`,两种关闭方式都在 Sheet 完全消失后触发,才是 onClosed
的正确挂点。内容 modifier(frame / padding / 把手 / fitToContents)与通用封装
保持一致,视觉不变。

Signed-off-by: Yecheng Fu <yechengfu1987@gmail.com>
@cofyc
cofyc requested a review from a team as a code owner September 7, 2026 15:52
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 7, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-08T01:32:41.333160Z db1326f New commits
🔒 Security Review Completed 2026-09-08T01:34:02.920895Z db1326f New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@greptile-apps

greptile-apps Bot commented Sep 7, 2026

Copy link
Copy Markdown

Greptile Summary

本 PR 将 iOS 会话选项 Sheet 从通用 @expo/ui BottomSheet 切换为直接使用 @expo/ui/swift-ui 的实现,并分离“展示状态变化”与“完全关闭”回调,以便删除和重命名操作在 Sheet 消失后继续执行。

  • onIsPresentedChange(false) 负责同步关闭状态,onDismiss 负责触发延迟操作。
  • 使用 Group 和 modifiers 复刻原有尺寸、边距及拖拽把手。
  • 新增关闭生命周期回归测试,但当前测试仅验证源码文本结构,未验证实际回调行为。

Confidence Score: 4/5

该 PR 看起来可以合并;核心修复路径没有发现阻断性问题,但回归测试应改为运行时回调测试以提供更可靠的长期保护。

Sheet 的关闭状态与完全消失回调现在符合调用方 pending action 的执行顺序,未发现具体功能故障;唯一问题是新增测试依赖源码文本形状,可能漏掉真实回归或阻碍等价重构。

Files Needing Attention: apps/mobile/src/tests/sessionOptionsExpoSheet.test.ts

Important Files Changed

Filename Overview
apps/mobile/src/session/SessionOptionsExpoSheet.tsx 改用 swift-ui BottomSheet,并将状态关闭与完全消失回调分别接入 onClose 和 onClosed。
apps/mobile/src/tests/sessionOptionsExpoSheet.test.ts 新增生命周期回归锚点,但基于源码字符串的断言较脆弱,无法验证运行时回调传递。

Sequence Diagram

sequenceDiagram
  participant U as 用户
  participant S as SessionOptionsExpoSheet
  participant C as 调用方状态
  participant P as pendingSheetActionRef
  participant A as Alert/重命名弹窗
  U->>S: 点击删除或重命名
  S->>P: 保存待执行操作
  S->>C: "设置 visible=false"
  C->>S: "isPresented=false"
  S-->>S: Sheet 完全消失
  S->>C: onDismiss → onClosed
  C->>P: 取出并清空待执行操作
  P->>A: 展示后续弹窗
Loading
Prompt To Fix All With AI
### Issue 1
apps/mobile/src/__tests__/sessionOptionsExpoSheet.test.ts:21-31
这个回归测试只检查 import 和 JSX 的文本形状,没有渲染组件或调用传给 BottomSheet 的回调。因此,即使运行时 props 接错,只要文本仍匹配,测试也可能通过;而抽取等价的命名回调、调整 JSX 包装或改用单引号却可能导致测试失败。建议 mock swift-ui BottomSheet,渲染 SessionOptionsPresenter,并直接断言 onDismiss 只触发 onClosed、onIsPresentedChange(false) 触发 onClose。

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (1): Last reviewed commit: "fix(mobile): 修复 iOS 左滑「选项」里删除与重命名无响应" | Re-trigger Greptile

Comment thread apps/mobile/src/__tests__/sessionOptionsExpoSheet.test.ts Outdated
@MagicLizi MagicLizi added awaiting-discussion 等待维护者讨论(review-pr) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) and removed awaiting-discussion 等待维护者讨论(review-pr) labels Sep 7, 2026
@MagicLizi

Copy link
Copy Markdown
Contributor

@cofyc 👋 这个 PR 还有 1 条 review conversation 没 resolve(apps/mobile/src/tests/sessionOptionsExpoSheet.test.ts),auto-review 因此暂时跳过、没法继续审查 / 合并。

如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。

@MagicLizi

Copy link
Copy Markdown
Contributor

命中 UI 路径(apps/mobile/src/session/SessionOptionsExpoSheet.tsx)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面(```html 代码块、.html 附件或在线预览链接),便于确认界面符合 DESIGN.md 设计规范

@MagicLizi MagicLizi added awaiting-discussion 等待维护者讨论(review-pr) and removed awaiting-discussion 等待维护者讨论(review-pr) labels Sep 7, 2026
review 反馈:原测试只匹配源码文本形状,运行期接错 props 也可能通过,
而等价重构(抽命名回调 / 调整 JSX 包装 / 改引号)反而会误报。

改为直接调用组件函数、在真实元素树上断言传给 BottomSheet 的 props 与
回调语义:onDismiss 只触发 onClosed、onIsPresentedChange(false) 只触发
onClose、onIsPresentedChange(true) 两者都不触发、程序化关闭(visible=false)
后 onDismiss 仍触发 onClosed,并补上菜单项 action 透传与 Android 平台分流。
「没退回通用 @expo/ui 封装」用两个不同的 mock 标记来判定,不再依赖字符串。

mobile 无 react renderer 依赖(加 devDependency 会改 apps/mobile/package.json
→ 变动 runtime fingerprint → 触发冷更,不值得);组件是纯函数且只用到已
mock 的 useTheme,手动展开函数组件即可。

负向对照:把组件还原成 main 版本后本文件 8 条中 6 条失败,
仍通过的 2 条(菜单接线 / 平台分流)本就与该 bug 无关。

Signed-off-by: Yecheng Fu <yechengfu1987@gmail.com>
@cofyc

cofyc commented Sep 8, 2026

Copy link
Copy Markdown
Contributor Author

界面效果证据(回应 UI evidence 提示)

本 PR 只改 Sheet 的关闭事件接线,不改布局、尺寸、颜色与文案 —— 内容 modifier
(frame / padding / presentationDragIndicator / fitToContents)按通用封装原值
逐条复刻,渲染结果与改动前一致。下面是改动后的实机界面(iPhone 17 Pro 模拟器 /
iOS 26.5 / development client),Light 与 Dark 双模式:

<!doctype html><html lang="zh-CN"><meta charset="utf-8">
<title>iOS 左滑「选项」Sheet — 改动后界面证据</title>
<style>
body{margin:0;padding:24px;background:#f6f7f8;color:#1f2328;
font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
h1{font-size:18px;margin:0 0 4px}
p.sub{margin:0 0 20px;color:#59636e}
.grid{display:flex;flex-wrap:wrap;gap:16px}
figure{margin:0;background:#fff;border:1px solid #d1d9e0;border-radius:10px;
padding:12px;max-width:392px}
figure.dark{background:#0d1117;border-color:#3d444d;color:#e6edf3}
img{width:100%;display:block;border-radius:8px}
figcaption{margin-top:10px;font-size:12px;color:#59636e}
figure.dark figcaption{color:#9198a1}
.note{margin-top:20px;padding:12px 14px;background:#fff8c5;
border:1px solid #d4a72c66;border-radius:8px;font-size:12px}
</style>
<h1>iOS 左滑「选项」Sheet — 改动后实机界面</h1>
<p class="sub">iPhone 17 Pro 模拟器 / iOS 26.5 / development client。本次只改关闭事件接线,
不改布局、尺寸、颜色与文案,外观与改动前一致。</p>
<div class="grid">
<figure><img alt="Light 模式下的选项 Sheet" src="data:image/jpeg;base64,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">
<figcaption><b>Light</b> — 常规操作分组(重命名任务 / 取消置顶 / 归档)与危险操作
(删除任务)分组,圆角卡片 + 分隔线,删除项用 destructive 语义色。</figcaption></figure>
<figure class="dark"><img alt="Dark 模式下的选项 Sheet" src="data:image/jpeg;base64,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">
<figcaption><b>Dark</b> — 同一套布局与间距,颜色走语义 token,
destructive 红在深色背景下对比度可读。</figcaption></figure>
<figure><img alt="删除确认弹窗" src="data:image/jpeg;base64,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">
<figcaption><b>删除确认</b>(本 PR 修复的正是这一步)— 点「删除任务」后系统 Alert
正常弹出并指名目标任务;改动前此弹窗永不出现。图中为本次端到端验证新建的一次性任务。</figcaption></figure>
</div>
<div class="note">截图已裁剪到 Sheet / 弹窗本体:本仓为公开仓库,背景中的真实任务标题与消息预览
属于个人数据,不适合公开,故未附整屏截图。</div>
</html>

关于截图范围:本仓是公开仓库,而实机截图的背景里是我本机的真实任务标题与消息
预览(个人数据),因此截图已裁剪到 Sheet / 弹窗本体再附上;确认弹窗里出现的
「throwaway session delete test」是本次端到端验证时新建的一次性任务,不是真实数据。

对照 docs/design-rules/DESIGN.md:常规操作与危险操作分成两个圆角卡片组、
删除项走 destructive 语义色、双模式均由语义 token 驱动(无单模式硬编码),
与改动前保持一致。

@MagicLizi MagicLizi added awaiting-discussion 等待维护者讨论(review-pr) and removed awaiting-discussion 等待维护者讨论(review-pr) labels Sep 8, 2026
@MagicLizi MagicLizi added awaiting-discussion 等待维护者讨论(review-pr) and removed awaiting-discussion 等待维护者讨论(review-pr) labels Sep 8, 2026

@MagicLizi MagicLizi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

独立审查通过:iOS 选项 Sheet 改用 swift-ui BottomSheet,程序化关闭也能走到 onClosed,删除/重命名确认才能弹出。没有 P0/P1。

@MagicLizi
MagicLizi merged commit 440bf6d into makecindy:main Sep 8, 2026
10 checks passed
@MagicLizi

Copy link
Copy Markdown
Contributor

iOS 左滑「选项」里点删除像没反应,其实确认弹窗卡在 Sheet 关完的回调上。换成 swift-ui 的 onDismiss 之后,程序化关闭也能把球传下去。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants