Skip to content

Group vertical tabs by project#9876

Draft
rgatx wants to merge 1 commit intowarpdotdev:masterfrom
rgatx:rgatx/project-group-vertical-tabs
Draft

Group vertical tabs by project#9876
rgatx wants to merge 1 commit intowarpdotdev:masterfrom
rgatx:rgatx/project-group-vertical-tabs

Conversation

@rgatx
Copy link
Copy Markdown

@rgatx rgatx commented May 2, 2026

Description

Adds an optional vertical-tabs setting to group visible tabs by detected project root. When enabled, vertical tabs render lightweight project section headers using the detected git repo root when available, falling back to the tab working directory. Unknown tabs remain independent so unrelated tabs are not collapsed together.

This is scoped to vertical tabs only and is default-off.

What changed

  • Added appearance.vertical_tabs.group_by_project, default false.
  • Added a "Group by project" toggle to the vertical tabs view options popup.
  • Added project grouping resolution for terminal and code panes:
    • Uses cached git repo roots from DetectedRepositories when available.
    • Falls back to normalized cwd/path.
    • Normalizes Windows drive paths and WSL /mnt/<drive>/... paths to the same grouping key shape.
    • Uses all panes/editor tabs in stable order so mixed-project tabs do not jump groups when focus changes.
  • Added project section headers with tab/pane counts and a rail colored from the top tab.
  • Preserved tab/pane colors instead of forcing group color onto every row.
  • Updated grouped drag/drop behavior so full visual orders can be materialized safely before pane insertion, while filtered views avoid partial-order materialization.
  • Added unit coverage for project grouping helpers, path normalization, visual-order validation, and active-tab preservation after visual-order materialization.

Notes on drag/drop behavior

When project grouping is enabled, dragging tabs or dropping panes may materialize the grouped visual order into the underlying tab order so grouped sections stay contiguous. While a vertical-tabs search filter is active, pane drops fall back to flat tab insertion rather than materializing a partial filtered order, to avoid reordering tabs that are hidden by search.

Scope

This PR is intentionally narrow. It does not propose a workspace concept, an explicit project configuration, or any UI beyond the existing vertical tab grouping setting surface. It only changes how tabs are grouped when the existing "Group by project" setting is enabled.

The resolver is structured to compose with the upcoming project primitive on the May–June 2026 roadmap (#9233). The detected project identity from this PR can be replaced or augmented by an explicit project configuration without changing the resolver's signature. The current order — git repo root, then normalized cwd, then unknown — would gain an explicit-project-match step at position 1 once that primitive lands.

Follow-ups

  • Collapsible project sections.
  • Per-project/group settings such as custom grouping scopes.
  • CLI-agent identity normalization for absolute command paths, WSL, SSH, and other substrates.

Linked Issue

Draft PR for #9875.

  • The linked issue is labeled ready-to-spec or ready-to-implement.

Issue is pending maintainer guidance on whether this needs a spec PR first or can be marked ready-to-implement.

Screenshots / Videos

Pending. This PR is opened as draft until visual evidence is attached.

Testing

  • cargo fmt -p warp --check
  • git diff --check origin/master...HEAD
  • cargo check -p warp
  • cargo test -p warp --lib workspace::view::vertical_tabs
  • cargo test -p warp --lib visual_tab_order_rewrite

Note: local ./script/presubmit was not completed because this machine is using Homebrew rustc 1.93.0/Clippy while the repo pins 1.92.0; Clippy 1.93 reports new unnecessary_unwrap warnings in current origin/master unrelated to this branch.

Agent Mode

  • Warp Agent Mode - This PR was created via Warp's AI Agent Mode

Changelog Entries for Stable

CHANGELOG-IMPROVEMENT: Optionally group vertical tabs by detected git repo or working directory.

Co-Authored-By: Warp agent@warp.dev

@cla-bot
Copy link
Copy Markdown

cla-bot Bot commented May 2, 2026

Thank you for your pull request and welcome to our community. We require contributors to sign our Contributor License Agreement, and we don't seem to have the users @rgatx on file. In order for us to review and merge your code, each contributor must visit https://cla.warp.dev to read and agree to our CLA. Once you have done so, please comment @cla-bot check to trigger another check.

@github-actions github-actions Bot added the external-contributor Indicates that a PR has been opened by someone outside the Warp team. label May 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

external-contributor Indicates that a PR has been opened by someone outside the Warp team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant