Skip to content

cx-13w3: an expanded row's hover pin runs Pin/Unpin Workspace - #19475

Merged
teamleaderleo merged 1 commit into
feat-cmux-nextfrom
cx-13w3-hover-pin
Oct 11, 2026
Merged

teamleaderleo merged 1 commit into
feat-cmux-nextfrom
cx-13w3-hover-pin

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 11, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

cx-13w3, slice 2 (expanded rows are opt-in; compact stays the default). An expanded row shows a pin on hover, left of its menu button, as in the T3 Code / Codex sidebars.

  • It reads Pin or Unpin from the workspace's pin state and runs Pin/Unpin Workspace (palette.toggleWorkspacePin) on the row's workspace. That is the action the row menu, the palette and the CLI run, so PinCommands decides whether a layout tile or the daemon flag pins it.
  • The App hands the sidebar the state and the action through SidebarModel.workspacePin. Without it the button never shows.
  • It shows with the menu button (hover, not while renaming), and the title fades under it like the other hover actions. Compact rows are unchanged.
  • A workspace row's per-dequeue wiring moved to WorkspaceRowView.wire(_:in:), because SidebarListView is at its type budget.

Strings: sidebar.a11y.pinWorkspace and sidebar.a11y.unpinWorkspace ("Pin workspace" / "Unpin workspace", the button's accessibility label and tooltip), in all 21 locales, translations taken from the app's existing pins.pinWorkspace / pins.unpinWorkspace.

Archive or settle from the brief is not in this slice: workspaces have no archive. Close stays on hover as before.

Testing

  • Fleet Release compile on the exact head d45ec7c: BUILD SUCCEEDED.
  • God-file check (full output, base = the branch point): no new failures. The crash ratchet is identical to a clean export of the base; check-concurrency reports only the base's hit in another file.
  • Live on a dev build of this head (capture slot, own config file, clean profile):
    • Compact rows on hover show the menu and close buttons only, as before. Expanded rows show the pin beside them.
    • Clicking the pin on workspace-3 pinned it: it left the list and became a tile under App Store.
    • Not exercised live: the Unpin state on a row. With layout tiles a pinned workspace is a tile, not a row; the Unpin icon only shows in the legacy flag mode.

Changelog

Added: expanded sidebar rows show a Pin button on hover.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Expanded sidebar rows now show a Pin/Unpin button on hover, left of the row menu. The button reads the workspace’s pin state and runs the same Pin/Unpin Workspace action (palette.toggleWorkspacePin) used by the row menu, palette, and CLI. Compact rows are unchanged.

The App supplies the pin state and toggle action via SidebarModel.workspacePin; without it the button never shows. Per-dequeue wiring for workspace rows moved to WorkspaceRowView.wire(_:in:). Accessibility and tooltip strings were added for all 21 locales.

Written for commit d45ec7c. Summary will update on new commits.

View guided diff Turn on auto-fix

Showcase

13w3 hover pin

13w3 pin click

Open the live gallery

On hover an expanded row shows a pin left of its menu button (Pin or
Unpin by the workspace's pin state). It runs palette.toggleWorkspacePin
on the row's workspace, the same action as the row menu, the palette and
the CLI, so a layout tile or the daemon flag pins it as PinCommands
decides. The App gives the sidebar the state and the action through
SidebarModel.workspacePin; compact rows are unchanged. A workspace row's
per-dequeue wiring moves to WorkspaceRowView.wire (SidebarListView is at
its type budget).

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

coderabbitai Bot commented Oct 11, 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: e37b6b31-002d-498d-9b1f-ca1dd7434a33

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
  • Autofix · 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

Copy link
Copy Markdown
Contributor

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

CI passes on d45ec7ca57 (run 38159002832 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, seen on other PRs that it failed on another pull request's run lately.

@teamleaderleo
teamleaderleo merged commit dd07ab4 into feat-cmux-next Oct 11, 2026
78 checks passed
@teamleaderleo
teamleaderleo deleted the cx-13w3-hover-pin branch October 11, 2026 17:18
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