Skip to content

Add basic tab/group pinning actions + vtab rendering#12534

Open
johnturcoo wants to merge 2 commits into
masterfrom
johnturco/app-4696-pinningunpinning-actions-for-tabs-groups
Open

Add basic tab/group pinning actions + vtab rendering#12534
johnturcoo wants to merge 2 commits into
masterfrom
johnturco/app-4696-pinningunpinning-actions-for-tabs-groups

Conversation

@johnturcoo

@johnturcoo johnturcoo commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Description

Adds the ability to pin individual tabs and tab groups in the vertical tabs panel, behind the PinnedTabs feature flag. Pinned items are moved to the top of the tab list (appended after existing pinned items), and a small pin icon appears in the top-right corner of each pinned row so the state is visible.

This includes adding a new Pin/Unpin tab/group option to tab and group menus respectively, and connecting these entry points to their associated actions.

Currently dragging, creating new tabs/groups and moving tabs to groups do not respect the pinned invariant that all pinned items must come before any items that are not pinned, but this will be addressed in a follow up PR.

How it works

Created new WorkspaceActions for pinning/unpinning both tabs and groups. The pin/unpin methods compute a single pinned_boundary_index (the count of leading tabs already in the pinned region, which can be pinned tabs or tabs in a pinned group) and reposition the affected tab or group block to that boundary in one move.

Tab pinning and group pinning are deliberately independent: pin_tab on a grouped tab first removes it from its group, then pins it standalone, while pin_tab_group only flips the group's own pinned flag and moves the group's contiguous block — individual member tab.pinned flags stay false because the block always travels as a unit.

Linked Issue

https://linear.app/warpdotdev/issue/APP-4696/pinningunpinning-actions-for-tabs-groups

Testing

  • I have manually tested my changes locally with ./script/run

Screenshots / Videos

Demo video

Additional demo for pinning a tab that is in a group

This is the product behavior that was decided on

@cla-bot cla-bot Bot added the cla-signed label Jun 11, 2026
@oz-for-oss

oz-for-oss Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

@johnturcoo

I'm starting a first review of this pull request.

You can view the conversation on Warp.

I completed the review and no human review was requested for this pull request.

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

@oz-for-oss oz-for-oss Bot 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.

Overview

This PR adds pin/unpin actions for tabs and tab groups behind PinnedTabs, plus vertical-tabs pin indicators and unit coverage for the basic reordering behavior.

Concerns

  • Pin state is now user-mutated and saved, but tab/group pinned flags are still absent from the app-state snapshot and SQLite persistence path, so pinned tabs and groups are lost after restart.
  • The ungrouped pinned-tab indicator remains visible while row hover action buttons are shown, which can overlap the kebab/close controls in vertical tabs.

Verdict

Found: 0 critical, 2 important, 0 suggestions

Request changes

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

Comment thread app/src/workspace/view/tab_grouping.rs
Comment thread app/src/workspace/view/vertical_tabs.rs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant