upstream(sync): Tier 2 notifications + agent identity (#6427, #6401, #6337, #6182) - #316
Merged
Merged
Conversation
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Author
NOTES (handover)DONE
IN PROGRESS
TODO / NEXT
|
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
…block#6401) Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
cursor
Bot
force-pushed
the
devin/issue-288-notif-agent-identity
branch
from
August 22, 2026 10:37
3ed0fc9 to
81d06bc
Compare
Finish the macOS-safe cleanup started for profile notification shots so mentions and members-sidebar specs do not write under /home/ubuntu. Signed-off-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: oscarlehuu <oscarlehuu@users.noreply.github.com>
Rebase + evidence (handoff)Rebased E2E attribution vs current main
Screenshots (full-window 1280×720, after rebase)Mentions Other setup marker: Members sidebar Other setup marker: Notification click-through (inbox before → Screen recording (mentions marker + notification click-through): |
This was referenced Aug 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Summary
Ports the Tier 2 upstream Buzz changes for notifications and agent identity to Crew, keeping Crew's channel-first IA intact.
block#6182 — restore release agent mentions. Relay-agent mention candidates previously hardcoded
ownerPubkey: null, so anowner-onlyagent was never mentionable after release — call-by-name (#230) could not wake it. Owner metadata is now carried end to end:list_relay_agentsresolves each agent's owner from cryptographically verified NIP-OA auth tags (verified_agent_owners_from_profiles, kind-0 profiles queried author-scoped in batches of 10 with bounded concurrency of 8), surfaced asRelayAgent.ownerPubkey, andagentAutocompleteEligibilityaccepts anowner-onlyagent when the verified owner matches the viewer:Owner-only builds additionally retain only agents with a verified owner, so an unverifiable claim can never widen access. Also removes relay-directory churn from
agents-data-changed(it now invalidates local keys only) and coalesces managed-agent startup backfill to the newest event per(pubkey, d-tag), tie-broken on lower event id.block#6337 + block#6401 — distinguish/simplify duplicate agent identity. Same-named agents owned by the viewer but managed on another machine now carry an "Other setup" marker (
title="From another Buzz setup") in mention autocomplete, the members sidebar and add-member results, and the redundant "managed by …" label is suppressed for those rows. Provenance ismanaged-here | managed-elsewhere | undefinedand fails closed — nothing is labelled until the managed and relay directories are settled, and another owner's agent is never attributed to a device.block#6427 — notification sender names + click-through routing. Notification titles resolve to a human sender name (display name → NIP-05 → neutral copy, never a pubkey), with background profile warm-up for cold caches. Activation is centralised: targets are built once per source (channel event, thread reply, forum post/comment, DM), activations are serialised FIFO with cancellation and per-activation error isolation, navigation is forced when the destination URL already matches, window reveal is bounded by a timeout, and the macOS activation queue is re-drained on
focus/visibilitychange.Crew divergences from upstream (deliberate)
goChannel/goForumPost/goHome; no path reintroduces or traverses the upstream Projects rail or Workbench navigation.src-tauri(commands/agent_discovery/agent_discovery_ownership.rs). Frontend-only verification cannot be trusted for an access decision, which is why this port touches Rust at all.AddMemberSearchResultRowwas extracted fromMembersSidebar.tsx(Crew's own row implementation, not upstream's) to satisfy the desktop file-size ratchet.RelayAgentmarker copy uses Crew's existingBadge/cnprimitives rather than upstream's styling helpers.Related issue
Fixes #288
Part of the Buzz 0.5.18 sync stack (meta #285). Upstream commits ported:
ee992ff08(block#6182),2e7583bf5(block#6337),aea0ef8df(block#6401),4e3c9e619(block#6427).Testing
TDD throughout — RED logs captured before each implementation, GREEN after. Gates on the final tree:
pnpm --filter buzz checkpnpm --filter buzz typecheckpnpm --filter buzz testjust _ensure-sidecar-stubs+just check-compilepnpm --filter buzz build:e2ementions.spec.tsdm-double-notification.spec.ts(isolated relay)alice(sender), not the DM channel namejust test-unit2c26b74bf(buzz-clicommand inventory,buzz-dbembedded migration count)Duplicate-agent identity, before → after:
Owner-only agent mentionable again for its verified owner (block#6182):
Notification click-through, before (notification pending) → after (target thread/post open):
Not verifiable here: packaged macOS LaunchServices activation, native notification delivery and real macOS window focus cannot be exercised on Linux/xvfb — the queue, re-drain and routing logic are covered by unit tests and the mock bridge only. Per #288 this needs a manual pass on macOS.
NOTES (handover)
DONE
devin/issue-288-notif-agent-identity:67e9b792afix(desktop): restore release agent mentions block/buzz#6182 restore release agent mentions (native NIP-OA owner verification, owner metadata plumbing, refresh-churn removal, backfill coalescing)28849c9d8fix(desktop): distinguish duplicate agent devices block/buzz#6337 + fix(desktop): simplify duplicate agent provenance block/buzz#6401 duplicate-agent provenance + "Other setup" marker (mentions, members sidebar, add-member rows)8165277d3fix(desktop): sender names in notifications + macOS click-through routing block/buzz#6427 notification sender names, target construction, FIFO activation queue with cancellation, forced navigation, bounded reveal, macOS re-draine8f3b2922,3ed0fc978remove host-specific screenshot paths from the E2E specotherSetupAgent.test.mjs,mentionSuggestionMapping.test.mjs,MentionAutocomplete.test.mjs,flushMentionDebouncecase,AppShell.helpers.test.mjs,searchHitNavigation.test.mjs,desktopActivations.test.mjs,notificationFormat.test.mjs,target.test.mjs, Rustverified_agent_owners_from_profilescases (valid / missing / forged auth tag / non-kind-0), plus E2E scenarios inmentions.spec.tsandchannels.spec.tsand the DM notification title assertion.just test-unit's two reds, proven pre-existing on base./home/ubuntu/evidence-288/— RED:red-frontend-tests.log,red-rust-tests.log,6427/red-notification-routing.log; GREEN/gates:final-*.log,green-*.log,6427/final2-*.log,6427/final3-*.log,6427/dm-relay-backed.log; base comparisons:base-just-test-unit.log,6427/just-test-unit-failure-comparison.txt,6427/profile-base.log,6427/profile-branch-after-revert.log; screenshots in/home/ubuntu/evidence-288/screens/.IN PROGRESS
error: unknown command 'test'from the resolved binary in that worktree) and was not retried under the stop order. So these three are named but not classified:tests/e2e/channels.spec.ts(86 passed, 1 failed) —channel settings only prompt editors to add an empty description: expected"Add a description", got"General discussion for everyone". This spec was extended by28849c9d8, so confirm this one first even though the assertion looks unrelated to the marker scenarios.tests/e2e/profile.spec.ts(26 passed, 3 failed) —declared owner sees runtime tab for a remote relay agentanddeclared owner sees runtime tab without a relay-agent record. The third failure in that file (Inbox badgesidebar-home-count) is already proven pre-existing on base./home/ubuntu/evidence-288/6427/final3-playwright-channels.log,/home/ubuntu/evidence-288/6427/final3-playwright-profile.log; failed base attempt:/home/ubuntu/evidence-288/6427/base-attribution-*.log.TODO / NEXT
2c26b74bfworktree (the throwaway worktree'spnpm exec playwright testresolved to a binary that rejectstest, so install/resolve Playwright there properly rather than reusing the branch install) and compare the three failures per test. Ifchannels.spec.tspasses on base, the seeded-description expectation collides with the members-sidebar scenarios this PR added and is ours to fix.tests/e2e/agents.spec.tsis 27 passed / 8 failed on this branch and the same eight named failures occur on base — no Agents E2E file was modified here, but it stays unverified territory.docs/crew/upstream-buzz.jsonis intentionally not bumped here (sibling sync PRs own the pin). Expect conflicts with sibling upstream(sync): Meta — Buzz desktop-v0.5.18 pin (Tier 1 + Tier 2/3 children) #285 stack PRs indesktop/src/features/messages/lib/useMentions.ts,desktop/src/shared/api/tauri.ts(at its file-size ceiling — 1074 of an effective 1075-line cap, so any further growth needs a compensating deletion),desktop/src/features/channels/ui/MembersSidebar.tsxanddesktop/src/app/navigation/useAppNavigation.ts..github/was touched.Link to Devin session: https://app.devin.ai/sessions/5c309cef93b24306aae91a7b06b74002
Requested by: @oscarlehuu