Skip to content

feat(me): drag chats between projects and Chats - #1112

Merged
johnmatthewtennant merged 2 commits into
mainfrom
claude/me-tab-section-drag
Oct 15, 2026
Merged

johnmatthewtennant merged 2 commits into
mainfrom
claude/me-tab-section-drag

Conversation

@johnmatthewtennant

@johnmatthewtennant johnmatthewtennant commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Why

In the Me sidebar, the only way to move a chat between a project and Chats is the row menu's Move to. The Messages sidebar already lets you drag channels between sections, so Me should support the same direct move.

What

  • Drag a Me chat with the pointer onto another project or onto Chats to move it there. The section under the pointer highlights as the drop target, and dropping onto a collapsed project expands it.
  • The drop runs the same move as Move to, so it keeps that action's writable gate, optimistic placement, rollback notice, Retry and focus on the relocated row. Dropping a chat on its own section does nothing.
  • This reuses the Messages sidebar's ChannelSidebarDnd, with its 6px activation distance (a plain click still opens the chat). Only the chat's select surface starts a drag. The row menu stays the keyboard path.
  • An empty, hidden Chats section stays hidden during a drag, like empty Starred in Messages.

Validation

The production browser UI and broker, with isolated signed-event relay fixtures, run a new journey in Chromium and WebKit:

  1. Create project Work from Alpha through Move to.
  2. Drag Alpha onto Chats. Focus follows Alpha, and the saved Me record has no assignments.
  3. Drag Beta onto Work. Focus follows Beta, and the saved record assigns Beta to Work.
  4. Drag Beta onto Work again. No drop target highlights and nothing is published.
  5. Reload. Beta is still in Work and Alpha is still in Chats.

The journey fails on main, where no drag starts. One browser case is added and none are removed. Pointer hit testing and focus after row relocation need a layout engine. The existing Me selection-surface spec now finds the row by its menu frame instead of the button's direct parent, because the button now sits inside the drag wrapper. The packaged native host was not exercised.

Screenshots

Exact-head browser build with disposable fixture data. Mid-drag, Design review notes moves from Chats onto the highlighted Work project:

Dragging a chat from Chats onto the highlighted Work project, light

Dragging a chat from Chats onto the highlighted Work project, dark

🤖 Generated with Claude Code

The Me sidebar only moved chats through the row menu's Move to. Reuse
the Messages sidebar's pointer drag so a chat can be dropped onto
another project or Chats. The drop calls the same move as the menu, so
it keeps the writable gate, optimistic placement, rollback, Retry and
focus.

Co-authored-by: Claude Worker <f425b86c3b780d43f8d9cf1802429d04dd985bf92eac44fca9468b5ad3887c5e@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: John Tennant <[email protected]>
@johnmatthewtennant
johnmatthewtennant marked this pull request as ready for review October 15, 2026 00:26
@johnmatthewtennant
johnmatthewtennant requested a review from a team as a code owner October 15, 2026 00:26

@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.

🤖 Approved. No actionable findings. Broad-suite failures remain unattributed; focused checks passed.

…-drag

* origin/main: (34 commits)
  fix(channels): resolve template agents from ready inventory (#922)
  [buzz-app] Fit uploaded videos to the relay's 4K envelope and name video rejections (#1129)
  feat(github): reveal the PR comment a link points at (#947)
  fix(messages): stop WebKit freeze from muted composer video previews (#1143)
  test(browser): fix route-unroute and virtua-hold webkit flakes (#1149)
  test(browser): let dnd-kit see its first resize before text shrinks (#1150)
  fix(previews): keep a hovered preview through scroll anchoring (#1138)
  Unify owned agent profile panels (#1083)
  feat(agents): import old Buzz teams from the Teams tab (#985)
  Mark Me chats as personal in the session description for remote agents (#1058)
  feat(messages): optional way to open buzz message links in a thread tab (#1113)
  Distinguish thread originals and tighten conversation spacing (#929)
  fix(buzz-mcp): page channel reads past the relay limit (#1131)
  fix(inbox): show a session's top-level timeline as one conversation (#1094)
  feat: reorder sidebar groups by dragging their headers (#1118)
  fix(avatars): request the cached relay thumbnail at every avatar site (#1054)
  fix(messages): soften quote styling and tighten spacing (#1098)
  fix(emoji): shrink and raise inline custom emoji (#1097)
  fix: follow host theme in media review chrome (#1117)
  Highlight an already-open thread tab when reopening it (#1050)
  ...

Signed-off-by: John Tennant <[email protected]>
Co-authored-by: Claude Worker <f425b86c3b780d43f8d9cf1802429d04dd985bf92eac44fca9468b5ad3887c5e@buzz.block.builderlab.xyz>

# Conflicts:
#	src/features/channel-navigation/ChannelSidebarDnd.tsx
@johnmatthewtennant
johnmatthewtennant merged commit 85c12c4 into main Oct 15, 2026
35 checks passed
@johnmatthewtennant
johnmatthewtennant deleted the claude/me-tab-section-drag branch October 15, 2026 02:30
johnmatthewtennant added a commit that referenced this pull request Oct 15, 2026
* origin/main:
  fix(navigation): share one abort reason so Settings → Back stops leaking DOM on V8 (#1161)
  Unify sidebar resizing and polish Solo navigation (#1132)
  Organize Builderlab agent identity and runtime settings (#1153)
  fix(channels): keep consecutive tab closes in the closing pane (#1158)
  feat(goose): add the goose agent type (#1125)
  feat: edit the last message with Cmd+Up (#1042)
  fix(channels): make Enter press the prominent lifecycle button (#1152)
  feat(me): drag chats between projects and Chats (#1112)
  fix(search): find open channels past the first 500 in Command-K (#1128)
  Stop in-flight request mocks from failing finished browser tests (#987)
  fix(channels): resolve template agents from ready inventory (#922)
  [buzz-app] Fit uploaded videos to the relay's 4K envelope and name video rejections (#1129)
  feat(github): reveal the PR comment a link points at (#947)
  fix(messages): stop WebKit freeze from muted composer video previews (#1143)

Signed-off-by: John Tennant <[email protected]>

# Conflicts:
#	docs/sessions/README.md
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