镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

feat(channels): copy a channel link from the channel menu - #811

Merged
kalvinnchau merged 2 commits into
mainfrom
honey/channel-link-copy
Oct 9, 2026
Merged

kalvinnchau merged 2 commits into
mainfrom
honey/channel-link-copy

Conversation

@baxen

@baxen baxen commented Oct 9, 2026 •

Copy link
Copy Markdown
Collaborator

What

Adds Copy link to the channel menu. It shows up in both the sidebar row menu (right-click / ⋯ on a channel) and the channel header ⋯ menu, because both render the same shared channel actions from ChannelSidebar.

The copied link is buzz://channel/<id>. It carries no community or identity, so it opens in the recipient's selected community, the same way message links (buzz://message?…) already do.

Routing

No routing changes were needed. buzz://channel/<id> is already handled:

  • OS deep link (tauri-plugin-deep-link, buzz scheme) → deepLinkStep in src/features/navigation/deep-links.ts
  • In-message link → parseBuzzLink / buzzLinkTarget in src/features/navigation/buzz-links.ts, shown as #channel-name

Opening still goes through the usual viewer, membership, and channel checks. The link grants no access.

Changes

  • src/bundled/channels/ChannelCopyLinkMenuItem.tsx: new menu item that writes the link to the clipboard and shows a host toast. It follows the ChannelReadMenuItem pattern (only mounted while the menu is open) and the CommunityRailItem copy-URL toast pattern.
  • ChannelSidebar.tsx: adds the item to rowActions.
  • ChannelSidebar.test.tsx: the fixture now mounts a ToastProvider (the real app always has one, in App.tsx). New test: the link is copied, it resolves back to the same channel, and both the success and failure toasts appear.

Validation

  • vitest run: 641 files / 9318 tests passed at e76c122
  • tsc --noEmit, biome lint + icon check: clean
  • Browser specs channel-lifecycle and navigation-mute-read now expect "Copy link" in their item lists (abb489a). They pass locally in chromium and webkit (28/28).
  • Agent review: no blocking findings. Optional follow-ups: show the error toast when navigator.clipboard is missing (non-secure contexts only), and add a header-menu browser assertion.
  • Human test: baxen tested it in the app.

Try it

  1. Right-click a channel in the sidebar, or open the header ⋯ menu → Copy link. You should see a "Link copied." toast.
  2. Paste the link into a message and send it. It should render as #channel, and clicking it should open the channel.
  3. In a terminal, run open 'buzz://channel/<id>'. The packaged or dev app should come to the front on that channel.

buzz-review-completed

🤖 Generated with Claude Code

Adds Copy link to the shared channel actions, so it appears in both the
sidebar row menu and the header menu. The link is buzz://channel/<id>,
which the existing deep-link and in-message link routing already open
in the recipient's selected community.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Honey <44b804aa12cc643328829fa31c020063ef3636c3a73c38ca49641c7626c11bb1@buzz.block.builderlab.xyz>
@baxen
baxen marked this pull request as ready for review October 9, 2026 17:34
@baxen
baxen requested a review from a team as a code owner October 9, 2026 17:34
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-09T17:38:00.179611Z e76c122 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e76c122564

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@@ -0,0 +1,25 @@
import { LinkIcon } from "../../shared/design-system/icons";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add the required DCO sign-off

This commit has no Signed-off-by trailer, so the exact reviewed SHA violates the repository’s per-commit DCO requirement and will fail the hosted DCO check. Replace it with a commit created using git commit --signoff under the verified actual author identity before submitting it.

AGENTS.md reference: AGENTS.md:L159-L166

Useful? React with 👍 / 👎.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Honey <44b804aa12cc643328829fa31c020063ef3636c3a73c38ca49641c7626c11bb1@buzz.block.builderlab.xyz>

@kalvinnchau kalvinnchau left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Code-only review of abb489a7 against main: no actionable findings. The new menu item uses the existing channel-link grammar and shared header/sidebar action path; copy rejection reports an error toast. Minimalness 10/10; elegance 9/10 (clipboard error handling is local to this item); correctness 9/10 (the test covers success and rejected writes, but not a missing clipboard API). No tests run for this review. A missing navigator.clipboard would throw before the rejection handler; that is a limited non-secure/unsupported-context follow-up, not a blocker for the supported app context.

@kalvinnchau
kalvinnchau merged commit f46d339 into main Oct 9, 2026
23 checks passed
@kalvinnchau
kalvinnchau deleted the honey/channel-link-copy branch October 9, 2026 18:22
wpfleger96 pushed a commit that referenced this pull request Oct 9, 2026
* origin/main: (22 commits)
  feat(teams): edit shared team instructions in their own record (#775)
  Use Sonner for bottom-right app toasts (#813)
  Allow bounded stdin data for fixed plugin host commands (#769)
  Add native Codex agents with CLI defaults (#751)
  Register placeholder Builderlab agent type in Agents2 (#788)
  feat(claude-code): bundle the Claude Code agent type by default (#818)
  perf(datetime): share compact clock formatting (#609)
  fix(agents): restore Rust test compilation on main (AgentEdit effort) (#821)
  polish inbox controls and resizable previews (#770)
  fix(reactions): open the reactor preview on a short hover (#730)
  perf(messages): batch timestamp locale and timezone lookups (#592)
  feat(agents): carry effort level in agent and team exports (#779)
  fix(agents): strip baked team instructions from imported prompts (#774)
  fix(agents): show renamed Buzz 1.0 agents in browser and publish rename profiles (#702)
  feat(channels): drag channels into and out of Starred (#745)
  test(mentions): wait for picker search focus before sending keys (#816)
  feat(conversation): show unjoined channel links by name, with a preview (#796)
  Polish Canvas-backed Todos panel and recovery (#804)
  docs: define shared composition rules for Buzz UI (#802)
  feat(channels): copy a channel link from the channel menu (#811)
  ...

Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>

# Conflicts:
#	crates/agent-controller/src/import.rs
#	crates/agent-controller/src/import/tests.rs
#	crates/agent-controller/src/store.rs
#	src-tauri/build.rs
#	src-tauri/capabilities/default.json
#	src-tauri/src/agents.rs
#	src-tauri/src/browser_permissions_tests.rs
#	src-tauri/src/lib.rs
#	src-tauri/src/relay/kit.rs
#	src/bundled/agents/AgentImport.test.tsx
#	src/bundled/agents/AgentImport.tsx
#	src/features/agents/control-native.ts
#	src/features/agents/control.ts
#	src/features/agents/team-instructions.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants