Skip to content

fix(channels): put the huddle launcher after the other header tools - #2660

Merged
ngthuydiem merged 2 commits into
mainfrom
fix/huddle-launcher-last
Nov 5, 2026
Merged

ngthuydiem merged 2 commits into
mainfrom
fix/huddle-launcher-last

Conversation

@ngthuydiem

@ngthuydiem ngthuydiem commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

The huddle launcher was pinned first among the channel header tools, right after the members button, so it was easy to start a call by accident. It now sorts after the other header tools (Todos, Terminal, …), next to the overflow menu. The linked-PR shortcut keeps its place just before it, so the two still sit together.

Change: invert launcherOrder in src/bundled/channels/useChannelPanels.tsx and update its ordering test.

Screenshots

Rendered with the real useChannelPanels ordering plus the real Todos, Terminal and Huddle launchers, on sample data in a browser fixture. The huddle registers first so the header's sort is what you see. The headphones button is tinted because the fixture has a huddle in progress ("Join active huddle").

Before:

Before: headphones right after the members button

After:

After: headphones after Todos and Terminal, before the overflow menu

Validation

1,373 unit tests across src/bundled/channels, src/bundled/huddles, and src/features/channel-navigation pass. Not yet checked in the native desktop app.

🤖 Generated with Claude Code

Co-authored-by: Fizz <6be7be23ec5bba868f3e1db5ec86013d76bd1a293dce5b435a192158fec13641@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Diem Nguyen <[email protected]>
@ngthuydiem
ngthuydiem marked this pull request as ready for review November 5, 2026 20:00
@ngthuydiem
ngthuydiem requested a review from a team as a code owner November 5, 2026 20:00
Co-authored-by: Fizz <6be7be23ec5bba868f3e1db5ec86013d76bd1a293dce5b435a192158fec13641@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Diem Nguyen <[email protected]>
@ngthuydiem
ngthuydiem merged commit cf1bb75 into main Nov 5, 2026
43 checks passed
@ngthuydiem
ngthuydiem deleted the fix/huddle-launcher-last branch November 5, 2026 21:17
wpfleger96 added a commit that referenced this pull request Nov 5, 2026
…leanup

* origin/main:
  fix(dialog): limit footer click-through to the gradient gutter (#2545)
  fix(channels): put the huddle launcher after the other header tools (#2660)
  feat(drafts-sent): bundle Drafts & sent for everyone (#2644)
  feat(identity): one Builderlab sign-in, the native NIP-FI session (#2576)
  fix(agents): let people dismiss connection setup cards (#2631)

Co-authored-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
Signed-off-by: Will Pfleger <[email protected]>

# Conflicts:
#	.github/workflows/release.yml
#	crates/plugin-manager/src/lib.rs
#	docs/configuration.md
#	src/bundled/builderlab/apps/client.test.ts
#	src/bundled/builderlab/apps/environment.ts
#	src/features/identity/builderlab-hosted.test.ts
#	src/features/identity/identity.test.tsx
#	vite.config.ts
wpfleger96 added a commit that referenced this pull request Nov 5, 2026
…-service

* origin/main:
  fix(sidebar): highlight collapsed sections with unread channels (#2539)
  perf(threads): isolate thread rows inside the scroller (#2462)
  perf(messages): skip the glass on closed message action bars (#2461)
  perf(threads): measure long-thread scrolling in browsers and the macOS app (#2460)
  docs(threads): set scrolling requirements and targets for long threads (#2459)
  fix(composer): seed required recipients in saved briefs (#2667)
  fix: preserve agent activity ownership and remove Solo composer gap (#2613)
  feat(agents): open agent card links in Create agent (#2662)
  Align Bestie messaging with the shared conversation workspace (#2614)
  feat(messages): add a compact message density (#2547)
  fix(dialog): limit footer click-through to the gradient gutter (#2545)
  fix(channels): put the huddle launcher after the other header tools (#2660)
  feat(drafts-sent): bundle Drafts & sent for everyone (#2644)
  feat(identity): one Builderlab sign-in, the native NIP-FI session (#2576)
  fix(agents): let people dismiss connection setup cards (#2631)
  AIDA-2425: Preserve links beside pasted images (#2520)
  feat(activity): show reactions to your messages in Activity (#2638)

# Conflicts:
#	docs/identity.md
#	src-tauri/src/federated_identity/agent/mod.rs
#	src-tauri/src/federated_identity/mod.rs
#	src-tauri/src/federated_identity/tests.rs
#	src/bundled/codex/runtime.ts
ngthuydiem added a commit that referenced this pull request Nov 5, 2026
Tapping the headphones button in a conversation header used to start a
huddle straight away, so a stray tap (for example while reaching for the
members button) started a call and turned on the microphone. Now, when
no huddle is running, the button opens a "Start a huddle?" confirmation
with Cancel and Start huddle.

- Uses the shared `AlertDialog` the same way `MarkAllReadShortcut` does:
Cancel has initial focus, so pressing Enter or Escape doesn't start a
call.
- Joining a huddle that's already running, cancelling a connection,
showing the active huddle and leaving all stay one tap.
- The Solo chat-actions menu item ("Start a huddle") doesn't ask,
because choosing from a menu is already deliberate.
- Confirming goes through the launcher's existing `activate`, so if
someone else starts a huddle while the dialog is open, you join theirs.

Related to #2660, which moves the button further from the members
button. This PR is independent of it.

### Screenshots

Rendered from `tests/fixtures/huddles.html` in a DM with no huddle
running, after clicking the headphones button.

Before (the call starts connecting immediately):


![Before](https://github.com/user-attachments/assets/ac28deee-9a0a-46a8-9c23-e474f842cebc)

After:


![After](https://github.com/user-attachments/assets/7e5eed38-6452-457d-aa3c-8f08d9ada9a5)

### Validation

- `HuddleLauncher.test.tsx` covers the new behavior: Cancel gets focus,
Cancel doesn't start a call, Start huddle does.
- `tests/browser/huddles.spec.mjs` passes in Chromium and WebKit (43
passed). The four journeys that start a new call from the header now
click Start huddle.
- Full `vitest run`: 18,283 passed, 2 failed in unrelated media tests.
The HEIC dimensions test fails in this local environment, and
`MediaDownloadAction` passes when run alone.
- `tsc --noEmit` and `biome check` are clean.
- Not yet checked: the native desktop app, and a human trying it.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Signed-off-by: Diem Nguyen <[email protected]>
Co-authored-by: Fizz <6be7be23ec5bba868f3e1db5ec86013d76bd1a293dce5b435a192158fec13641@buzz.block.builderlab.xyz>
Co-authored-by: Claude Opus 5.5 <[email protected]>
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