Skip to content

cmux-next sidebar: drag a workspace onto another to group them - #17552

Merged
teamleaderleo merged 18 commits into
feat-cmux-nextfrom
op-next-sidebar-merge-drag-group
Oct 6, 2026
Merged

teamleaderleo merged 18 commits into
feat-cmux-nextfrom
op-next-sidebar-merge-drag-group

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Dropping a workspace on another now makes a proper group, on top of Lawrence's centre band (spec 1780d02, d3a3d65): the card's centre in the middle 30% to 70% of a loose row groups at once, above it the drop goes before the row, below it after.

  • The band's edges are sticky once entered (out to 15% and 85%), so a drop near an edge doesn't flicker between grouping and reordering. This adds no delay.
  • A drop on a loose row makes a group of both at the target row, named "New Group" with the first unused group color, and starts renaming it in place.
  • Group headers and rows inside a group keep the leading-edge rule.
  • Esc cancels the drag. Cmd-Z after a group drop (new group or join) puts the dragged rows back where they started.

The 275 ms dwell from the first version was dropped to match d3a3d65.

Testing

  • SidebarGroupBandTests and SidebarOntoGroupTests: a loose row can take a group and group rows, pinned rows and other machines can't; the band groups with no dwell and its edges are sticky; a square drop makes a named, colored group that renames in place, and Cmd-Z undoes it; the top of a row reorders; Esc groups nothing; Cmd-Z takes a joined row back out.
  • Fleet build of this branch, captured on a capture Mac (captures in a comment).
  • check-no-godfiles and the localization catalog check pass locally. "Move to Group" (the undo name) is translated in all 21 locales; the group name reuses the base's sidebar.group.newName.

Changelog

  • Fixed: in the cmux-next sidebar, a workspace dropped on another makes a named, colored group you can rename right away, and Cmd-Z undoes it.

🤖 Generated with Claude Code

teamleaderleo and others added 4 commits October 5, 2026 22:21
Leo 2026-10-06: dropping a workspace on another did nothing, and reorder
against drop-on was far too sensitive. The pointer's quarters reorder,
its middle half groups after a dwell with a wider hold band; a drop on a
row makes a named, colored group and renames it in place, on a group
header joins it, and Cmd-Z puts the rows back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pointer's place in the row under it decides: the outer quarters
reorder, the middle half groups after a 275 ms dwell and holds until the
pointer leaves a wider band, so reorder and group never flicker. A drop on
a loose row makes a named, colored group and starts its rename; a drop on
a group header or grouped row joins that group. Esc cancels, Cmd-Z puts
the rows back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ebar-merge-drag-group

# Conflicts:
#	Packages/macOS/CmuxNext/Sources/CmuxNextSidebar/Strings.swift
…he merge

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 902bb2eb-abfd-4e43-950c-3e9202b7781e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Not verified: macOS jobs did not run: compile and app tests were skipped on 67858093b0; ci-status is green without them.

CI passes on 67858093b0 (run 37494171927 attempt 1).
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped (the macos job needs both to succeed). Re-run CI once they pass, before merging.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Batch queue: dropped from batch next-batch/20261006 (feat-cmux-next 7cf558be8de1), conflict with feat-cmux-next.

  • Packages/macOS/CmuxNext/Sources/CmuxNextSidebar/Logic/DropResolver.swift: both sides changed it
  • Packages/macOS/CmuxNext/Sources/CmuxNextSidebar/Resources/Localizable.xcstrings: same key changed on both sides: 'strings.sidebar.group.newName'
  • Packages/macOS/CmuxNext/Sources/CmuxNextSidebar/Views/SidebarListView+Drag.swift: both sides changed it
  • Packages/macOS/CmuxNext/Tests/CmuxNextSidebarTests/SidebarInPlaceReorderTests.swift: both sides changed it
  • Packages/macOS/CmuxNext/Tests/CmuxNextSidebarTests/SidebarOntoGroupTests.swift: both sides changed it

Next: merge feat-cmux-next, resolve, push.

teamleaderleo and others added 3 commits October 6, 2026 08:19
…ebar-merge-drag-group

Lawrence's centre band (spec 1780d02) now decides where a drop lands and
whether a row can take an onto-drop; drag to group gates that band
through the dwell, reads the card's centre, and reuses the base's New
Group name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lawrence's spec 1780d02 (d3a3d65) groups as soon as the card's centre is in
a loose row's onto band. The dwell is gone; the band's edges stay sticky
once entered, which adds no delay. Group rows keep the leading-edge rule.
The drop still names and colors the group, renames it in place, and Cmd-Z
puts the rows back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo and others added 3 commits October 6, 2026 08:44
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A group made by a drop is still animating in when its rename starts, so
the field took the view's in-flight frame and sat above the header.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Batch queue: green. Batch stack 87bf7dcfd4d7 on feat-cmux-next 7d209e8ddbed with #17520 #17534 #17541 #17551 #17552 #17558 #17582. Fleet production build: job 3b88261eeebcf0f42557a5e7 (cmux-ci artifact 3b88261eeebcf0f42557a5e7 (job 3b88261eeebcf0f42557a5e7, tag nb-local-20261006-153816-1)). heavy tier did not run on this branch (run); your PR's own checks are the tests. Validated this PR at 0fc385de270c.

Next: land it yourself with gh-merge-green on this receipt.

teamleaderleo and others added 2 commits October 6, 2026 08:56
The header's hover refresh at the end of the landing animation showed its
title again under the open field. The rename now starts after it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cursor

cursor Bot commented Oct 6, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

teamleaderleo and others added 5 commits October 6, 2026 09:03
… makes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The home daemon creates the group under its own id, so the optimistic
group the rename opened on vanished and left the field orphaned (or, once
the rename waited for the landing, never opened). The rename now starts on
the group the anchor row is in and moves to its replacement, keeping the
typed text.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A 15% hold kept grouping where spec 1780d02 reorders (the card's centre
at 20% of the row above). Five percent stops edge flicker without
changing the reorder zones. The rename field check compares against the
header's title, which sits off the row's centre.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Captures from a fleet build of this branch on a capture Mac (seeded with several workspaces, workspace-5 dragged onto the middle of workspace-4).

Left to right: before the drag; the drop made a blue "New Group" with the rename field open on its header; "Infra" typed; Return commits it; Edit > Undo New Group puts the rows back.

after

Full window after the drop:

dropped

Before (the base with d3a3d65): the same drop makes a grey "New Group" with no rename field, and Edit has no Undo for it. That base run reused sidebar state left from an earlier run, so its frames aren't posted.

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.

1 participant