Skip to content

feat: add dismiss flow for permission prompts#93

Merged
wxtsky merged 1 commit intowxtsky:mainfrom
lkangd:feature/add-dismiss-permission-request
Apr 16, 2026
Merged

feat: add dismiss flow for permission prompts#93
wxtsky merged 1 commit intowxtsky:mainfrom
lkangd:feature/add-dismiss-permission-request

Conversation

@lkangd
Copy link
Copy Markdown
Contributor

@lkangd lkangd commented Apr 15, 2026

Summary

  • 在权限请求卡片中新增 Dismiss(忽略) 操作:允许用户暂时关闭当前权限提示,而不立即执行 Allow/Deny。
  • 优化权限队列展示逻辑:被 dismiss 的会话会被跳过;当同会话出现新的权限请求时,会重新进入可见队列并提示用户处理。
  • 新增权限流单测 AppStatePermissionFlowTests,覆盖:
    • 多会话 dismiss 跳过逻辑
    • 单条权限 dismiss 后折叠且保持 pending
    • 已 dismiss 会话在后续新权限到来后的重新展示
  • 更新 L10n(新增 dismiss 文案)并在 .gitignore 中补充本地开发/工具相关忽略项。

Why

当前权限弹窗只有 Allow/Deny,用户在“暂时不处理”场景下体验不佳。
本次改动补齐了“先收起、稍后再处理”的交互能力,同时保证权限请求状态机行为可测试、可回归验证。

Test Plan

  • swift test --filter CodeIslandTests/AppStatePermissionFlowTests
  • 手动验证权限卡片:
    • 点击 Dismiss 后卡片收起,且请求不被立即响应
    • 多会话时可跳转到下一个未 dismiss 的权限请求
    • 同会话后续出现新权限请求时可再次展示并可正常 Allow/Deny

@lkangd
Copy link
Copy Markdown
Contributor Author

lkangd commented Apr 15, 2026

关联 issue:88

Copy link
Copy Markdown
Owner

@wxtsky wxtsky left a comment

Choose a reason for hiding this comment

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

核心功能写得很好!Dismiss 逻辑清晰,测试覆盖到位。有两个非功能相关的改动需要拆出去:

需要拆分的内容

1. .gitignore 变更

新增了 .claude/.cursor/.agents/CLAUDE.md.vscode/ 等大量忽略规则,这些跟 dismiss 功能无关,影响范围较大,应该单独提 PR。

另外注意文件末尾缺少换行符(CLAUDE.md 后没有 \n),POSIX 规范要求文本文件以换行结尾。

2. scripts/dev-hot-restart.sh(264 行)

这是一个通用的热重载开发脚本,依赖 fswatch,跟 dismiss 功能无关。建议单独提 PR 或放到开发工具相关的 PR 里。

核心功能 ✅

  • dismissedPermissionSessionIds Set + nextVisiblePermissionIndex() 跳过逻辑 👍
  • 新权限到来时自动清除 dismiss 状态 👍
  • AppStatePermissionFlowTests 三个测试场景覆盖完整 👍
  • UI 上 Dismiss 按钮位置合理 👍

请把以上两项拆到单独 PR,核心 dismiss 功能部分我会立即 approve。

@lkangd lkangd force-pushed the feature/add-dismiss-permission-request branch from b6b39a7 to 8a7599f Compare April 15, 2026 08:45
Allow dismissing permission prompts without resolving the underlying continuation, skip dismissed sessions in queue display, and add permission flow tests for dismiss behavior.
@lkangd lkangd force-pushed the feature/add-dismiss-permission-request branch from ae538bf to d3df54a Compare April 15, 2026 08:48
@lkangd
Copy link
Copy Markdown
Contributor Author

lkangd commented Apr 15, 2026

核心功能写得很好!Dismiss 逻辑清晰,测试覆盖到位。有两个非功能相关的改动需要拆出去:

需要拆分的内容

1. .gitignore 变更

新增了 .claude/.cursor/.agents/CLAUDE.md.vscode/ 等大量忽略规则,这些跟 dismiss 功能无关,影响范围较大,应该单独提 PR。

另外注意文件末尾缺少换行符(CLAUDE.md 后没有 \n),POSIX 规范要求文本文件以换行结尾。

2. scripts/dev-hot-restart.sh(264 行)

这是一个通用的热重载开发脚本,依赖 fswatch,跟 dismiss 功能无关。建议单独提 PR 或放到开发工具相关的 PR 里。

核心功能 ✅

  • dismissedPermissionSessionIds Set + nextVisiblePermissionIndex() 跳过逻辑 👍
  • 新权限到来时自动清除 dismiss 状态 👍
  • AppStatePermissionFlowTests 三个测试场景覆盖完整 👍
  • UI 上 Dismiss 按钮位置合理 👍

请把以上两项拆到单独 PR,核心 dismiss 功能部分我会立即 approve。

已将无关变动移除。@wxtsky

@lkangd lkangd requested a review from wxtsky April 15, 2026 08:50
nguyenvanduocit pushed a commit to nguyenvanduocit/CodeIsland that referenced this pull request Apr 16, 2026
… T-030, T-031)

- CLAUDE.md: add April 16 scout entry; note v1.0.20 was missed in Apr 15 scout
- T-027: PR wxtsky#86 merged Apr 15 — remove "watch" blocker, ready to implement
- T-029: upstream fix found in v1.0.20 (48520de) — single-line deletion in
  TerminalActivator.swift:98; demoted effort from S to XS
- T-030 (new, XS, high): bump stuck-session idle threshold 60s → 300s for
  unmonitored/no-tool sessions (48520de AppState.swift fix)
- T-031 (new, S, medium, watch): dismiss flow for permission prompts (PR wxtsky#93 open)

https://claude.ai/code/session_016nRzjAcEvsWDCt2nFtT3DN
@wxtsky wxtsky merged commit fb64020 into wxtsky:main Apr 16, 2026
nguyenvanduocit pushed a commit to nguyenvanduocit/CodeIsland that referenced this pull request Apr 17, 2026
…033)

- CLAUDE.md: add April 17 scout entry covering wxtsky/CodeIsland v1.0.21
- T-031 promoted: PR wxtsky#93 merged — dismiss action for permission requests
- T-032 new: fix fenced code block rendering in ChatMessageTextFormatter (cf9fb81)
- T-033 new: reduce screen-poll interval 1s → 5s to cut Energy Impact (136737a)
- vibeislandapp/vibe-island: no code changes since Apr 3

https://claude.ai/code/session_01PP8MnuEqQ5Q3WRKojJUB3p
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants