feat: Buzz entity links — rich preview cards + in-app navigation for repos, PRs, and issues - #4695
Open
thomaspblock wants to merge 5 commits into
Open
feat: Buzz entity links — rich preview cards + in-app navigation for repos, PRs, and issues#4695thomaspblock wants to merge 5 commits into
thomaspblock wants to merge 5 commits into
Conversation
Design doc for buzz:// links to Buzz-hosted repositories, projects, pull requests, and issues, with GitHub-parity preview cards in chat, in-app and OS-level deep-link handling, CLI link output, and agent prompt guidance. Spec only — no implementation. Signed-off-by: Thomas Petersen <thomasp@squareup.com>
Relay git URLs ({relay-origin}/git/<pubkey>/<repo>) pasted in chat now get
the same rich preview card treatment as GitHub links. Detection keys on the
/git/<64-hex-pubkey>/<repo> path shape since relay hosts differ per
community; the card links to the browsable web repo page (/repos/<d-tag>)
rather than the raw git transport endpoint. First implemented slice of the
Buzz entity links spec (docs/buzz-entity-links.md).
Signed-off-by: Thomas Petersen <thomasp@squareup.com>
Desktop renders buzz://pr|issue|repo links as Buzz preview cards with titles enriched from the relay event's subject tag, and clicking a card or inline link navigates in-app to the project detail view. The CLI's pr open / issues create / repos create now return a matching link field, and the agent base prompt tells agents to paste it when announcing work. Signed-off-by: Thomas Petersen <thomasp@squareup.com>
Signed-off-by: Thomas Petersen <thomasp@squareup.com>
Clone-URL previews rewrote their href to the relay web page, so clicking the card opened an external browser instead of the Projects view. Normalize the href to the canonical buzz://repo deep link, which wires up the same in-app click handler as explicit entity links, dedupes both spellings of a repo, and makes inline clone-URL anchors navigate in-app too. Signed-off-by: Thomas Petersen <thomasp@squareup.com>
thomaspblock
added a commit
that referenced
this pull request
Aug 4, 2026
Contributor
Author
|
Screenshots of the new Buzz entity link cards (captured via the E2E mock bridge). Repo card from an HTTPS clone URLAn agent pastes the relay clone URL ( PR and issue cards from
|
thomaspblock
marked this pull request as ready for review
August 4, 2026 10:27
thomaspblock
enabled auto-merge (squash)
August 4, 2026 10:27
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
Gives Buzz-hosted git entities the same "GitHub-style" chat experience GitHub links already get: rich preview cards, real titles, and click-through — except clicks navigate in-app to the Projects view instead of a browser.
docs/buzz-entity-links.md— link scheme, slices, and deferred work (buzz://project, OS deep links, web routes).buzz://deep links: newdesktop/src/shared/lib/entityLink.tswith builders + strict parser forbuzz://pr?id=…&owner=…&d=…,buzz://issue?…, andbuzz://repo?owner=…&d=…, mirrored by a Rust module (crates/buzz-cli/src/links.rs) with a shared golden-format test so the two implementations can't drift.linkPreview.tsrecognizesbuzz://entity links and HTTPS relay clone URLs ({origin}/git/<pubkey>/<repo>, the shape agents paste today). Both normalize onto the canonicalbuzz://href, so the two spellings of a repo dedupe to oneBuzz-provider card (BuzzMarklogo) rendered bylink-preview-attachment.tsx.subjecttag or first content line) viauseResolvedLinkPreviews.ts; the cache is community-scoped and reset inresetCommunityState().goProject(owner:dtag)instead of handing the URL to the OS (markdown/entityLinks.tsx). Entity-link and external-anchor logic were extracted out ofmarkdown.tsxto stay under the file-size ratchet.buzz pr open,buzz issues create, andbuzz repos createnow return a ready-madelinkfield, andbase_prompt.mdinstructs agents to paste it verbatim when announcing work.Test plan
entityLink.test.mjsandlinkPreview.test.mjscoverage (golden formats, malformed-link rejection, clone-URL/buzz://dedupe)cargo test -p buzz-cligolden-format test, clippy + fmt cleantsc --noEmitclean; pre-push hooks (desktop-tauri-checks, rust-tests, desktop-test) passbuzz://prlink in a channel — verify one card each, real PR title, and in-app navigation to the Projects view