github / github/copilot-cli

Desktop notifications suppressed when terminal window is backgrounded but the Copilot tab stays active (macOS)

Offen
#4,036 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area:terminal-rendering
Vorherrschende Sprache
Shell
Sterne
11.2k
Forks
1.9k
Ø Merge
14 Std. 16 Min.
Gemergte PRs (30 T.)
6

Beschreibung

### 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_

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

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.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
macos, shell
Bereich
cli, desktop-dev, operating-systems
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.