You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: browser-tab notification for a parked approval (goal 0132 slice A) (#361)
Adds a generic browser-notification seam (app/useBrowserNotify.ts +
shared/browserNotify.ts) that raises a Notifications-API banner from a
live, server-mode tab when a decision needs action and that tab isn't
focused -- the tap on the shoulder the goal names as its whole value.
The parked-guardrail-approval call in App.tsx is the seam's first
consumer, not the only one it's built for: a future event just calls
it with different copy and a different click target.
Opt-in lives in Settings > Remote access ("Notify me on this device"),
requesting permission on click only, and states its own
default/granted/denied state honestly. Clicking a raised notification
focuses the tab and lands on the Review queue via existing in-app
navigation.
- shouldNotifyBrowserTab is a pure, unit-tested predicate (server mode
AND unfocused AND unseen dedupe key).
- remote-access.spec.ts covers the opt-in control's presence and its
default/granted/denied states, plus the click -> requestPermission ->
granted round trip.
- testing.md's manual-only registry gets the real-OS-banner entry (no
CI surface can raise or click a real system notification).
- userdocs/reference/settings.md documents the control; llms-full.txt
regenerated via go generate ./internal/docsgen.
Claude-Session: https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
0 commit comments