Skip to content

feat(desktop): native notifications for agent attention - #424

Draft
ALGORITHM-0 wants to merge 10 commits into
pylon-code:pylonfrom
ALGORITHM-0:feat/desktop-notifications
Draft

feat(desktop): native notifications for agent attention#424
ALGORITHM-0 wants to merge 10 commits into
pylon-code:pylonfrom
ALGORITHM-0:feat/desktop-notifications

Conversation

@ALGORITHM-0

@ALGORITHM-0 ALGORITHM-0 commented Sep 9, 2026

Copy link
Copy Markdown

Pylon desktop currently gives no system notification when an agent finishes or needs attention while the user is in another app. This adds native notifications for approval, input, completion, and failure, with per-device controls in General settings and a test button.

The renderer reconciles awareness transitions across all connected environments and threads. First observation primes silently, focused or disabled transitions are consumed without replay, and Electron main gates delivery on window focus. Clicking restores Pylon and opens the target thread. All five preferences default to ON, as approved by the maintainer.

Candidates carry environmentId and threadId rather than the shared mobile deepLink, so navigation uses the existing web route. Native notification objects remain alive until handled so delayed clicks retain their callbacks; the manual pass caught this lifetime issue and a collection-based regression test now covers it. No server, relay, mobile, or provider behavior changes.

Validation:

  • 150 targeted tests across settings contracts, awareness reconciliation, native notification lifetime, delivery, IPC, settings search, and desktop persistence.
  • Scoped typechecks for @t3tools/contracts, @t3tools/web, and @t3tools/desktop passed.
  • Unsigned Electron spike displayed a banner on macOS 26.5.2. Pylon (Dev) has a separate notification identity and required enabling its macOS notification setting.
  • Real desktop pass confirmed the focused test button, preference persistence across restart, a completion from thread B while thread A was open and Pylon hidden, and delayed click-through to thread B (verified by both navigation trace and exact route).
  • Focused completion was exercised; hiding afterward and restarting with finished threads sent no replay candidates. A turn completed with the master switch off, and re-enabling it sent no past completion.
  • Windows/Linux native presentation and detailed minimized-versus-occluded focus semantics remain platform review items.

Draft pending the repository-required before/after images and short recording of notification arrival and click-through. A settings screenshot is captured locally, but the computer-use tooling could not capture/upload the required full-screen recording. The implementation plan and approved design scratch file are intentionally excluded from this branch.

Implemented with GPT-6 Astra in Codex App.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Implemented with GPT-6 Astra in Codex App.
…ions

Update the desktop settings fixture for the new preference fields.

Implemented with GPT-6 Astra in Codex App.
…k-through

Implemented with GPT-6 Astra in Codex App.
Implemented with GPT-6 Astra in Codex App.
Implemented with GPT-6 Astra in Codex App.
Implemented with GPT-6 Astra in Codex App.
Keep pending notification objects alive until handled and release them when the desktop scope closes. Add collection-based lifetime regression coverage.

Implemented with GPT-6 Astra in Codex App.
@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XL labels Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant