Problem
Preview Workspace currently treats Pin as a one-way promotion: a transient tab can be pinned into a permanent tab, but a permanent tab has no Unpin action. The only available way to remove it is Close.
This limitation was identified while investigating #145. It is intentionally excluded from #145, which should preserve the existing one-way Pin behavior and only restore reliable access to Close and the transient-tab Pin action.
Expected
Users should be able to unpin a permanent tab and return it to transient/reusable behavior through an explicit, accessible Pin/Unpin state control.
Design questions
- Define what happens when a permanent tab is unpinned while its group already has a transient tab.
- Preserve the invariant of at most one transient inspection slot per group.
- Define which tab is retained, replaced, closed, or promoted when resolving that conflict.
- Keep pointer, keyboard, and touch interaction semantics consistent.
Acceptance criteria
- Permanent tabs expose an accessible Unpin action.
- Unpinning transitions the tab into the group’s reusable transient state.
- Existing-transient conflict behavior is explicitly defined and covered by model tests.
- Persistence and workspace validation preserve the one-transient-tab-per-group invariant.
- Component coverage verifies visible and operable Pin/Unpin states.
Problem
Preview Workspace currently treats Pin as a one-way promotion: a transient tab can be pinned into a permanent tab, but a permanent tab has no Unpin action. The only available way to remove it is Close.
This limitation was identified while investigating #145. It is intentionally excluded from #145, which should preserve the existing one-way Pin behavior and only restore reliable access to Close and the transient-tab Pin action.
Expected
Users should be able to unpin a permanent tab and return it to transient/reusable behavior through an explicit, accessible Pin/Unpin state control.
Design questions
Acceptance criteria