Desktop notifications suppressed when terminal window is backgrounded but the Copilot tab stays active (macOS)
- Ngôn ngữ chính
- Shell
- Star
- 11.2k
- Fork
- 1.9k
- Merge trung bình
- 14 giờ 16 phút
- Pull request đã merge (30 ngày)
- 6
Mô tả
### Describe the bug
### Version
1.0.66+ (notification feature introduced in 1.0.66)
### Summary
Desktop notifications (attention / idle, added in 1.0.66) do not fire when the
terminal window is in the background but the Copilot session's tab remains the
active tab within that window. Notifications work correctly when switching to a
different tab or a fully separate app.
### Root cause (from the shipped bundle)
Notification firing is gated on terminal focus tracked via DEC private mode 1004:
- CLI sends `ESC[?1004h`; FocusIn (`ESC[I`) sets focused=true, FocusOut (`ESC[O`) sets focused=false.
- Both the attention and idle paths only notify when `focused !== true`.
When a window is backgrounded while its active tab is unchanged, many terminals
(and tmux/control-mode setups) do not deliver a FocusOut to the active tab's PTY.
`focused` therefore stays `true` and the notification is silently dropped. The CLI
relies solely on DEC-1004 with no fallback, and there is no setting/env to override
the focus gate (only COPILOT_DISABLE_DESKTOP_NOTIFICATIONS to turn them off).
### Repro
1. Open Copilot CLI in a tab; keep it the active tab in its window.
2. Click another window/app so the terminal window loses focus (do NOT switch tabs).
3. Trigger an attention/idle notification (e.g. let a task finish / wait for input).
4. Expected: desktop notification. Actual: none.
### Environment
- OS: macOS
- Terminal:
- Multiplexer:
### Suggested fix
Either (a) add a fallback / periodic focus re-query so stale `focused=true` doesn't
suppress notifications, or (b) add an opt-in setting/env (e.g. `notifyWhenFocused` /
`COPILOT_ALWAYS_NOTIFY`) to bypass the focus gate.
### Affected version
1.0.66+
### Steps to reproduce the behavior
1. Open Copilot CLI in a tab; keep it the active tab in its window.
2. Click another window/app so the terminal window loses focus (do NOT switch tabs).
3. Trigger an attention/idle notification (e.g. let a task finish / wait for input).
4. Expected: desktop notification. Actual: none.
### Expected behavior
notification popup on macOs should still come in.
### Additional context
_No response_
Hướng dẫn đóng góp
Hướng nghiên cứu
Start by tracing DEC private mode 1004 focus tracking in the shipped bundle, then inspect the attention and idle notification paths that require focused !== true. Reproduce the macOS background-window case with the active tab unchanged. Done means notifications appear when the terminal window loses focus, while existing tab-switch behavior and the disable-notifications setting still work.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- macos, shell
- Lĩnh vực
- cli, desktop-dev, operating-systems
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 48/100