Skip to content

feat(zellij): restore fuzzy tab swap menu - #199

Merged
lanej merged 2 commits into
masterfrom
feat/zellij-tab-swap
Nov 7, 2026
Merged

lanej merged 2 commits into
masterfrom
feat/zellij-tab-swap

Conversation

@lanej

@lanej lanej commented Nov 7, 2026 •

Copy link
Copy Markdown
Owner

Restore Ctrl-f W as the fuzzy tab-swap menu, matching tmux’s swap-window: selecting D in [A, B, C, D] from A produces [D, B, C, A]. Live panes keep their processes, and each attached client remains on its original tab. This reuses the existing picker and native CLI without a new runtime patch or plugin permission.

The swap consists of adjacent moves and is not atomic. Concurrent changes or uncertain replies stop further work without retry or rollback. Closing the picker mid-swap can leave a partial order without a surviving warning; inspect positions before retrying. Modern status-plugin/runtime installation is required.

Reliability note: One initial Linux run rejected ownership before opening the menu; the cause remains unconfirmed. The picker fails closed on uncertain ownership rather than reordering.

Related: #188

@lanej
lanej marked this pull request as ready for review November 7, 2026 08:16
@lanej
lanej merged commit dc61505 into master Nov 7, 2026
12 checks passed
@lanej
lanej deleted the feat/zellij-tab-swap branch November 7, 2026 08:16
lanej added a commit that referenced this pull request Nov 7, 2026
Keep `Ctrl-f W` checks tied to the status-plugin instance captured when
the picker opens. Repeated discovery could elect another bar and report
a false attachment change, leaving even current-tab selection open
without reordering. The [postmerge Linux
failure](https://github.com/lanej/dotfiles/actions/runs/42354797356/job/128350404453)
showed the same client switching from plugin 7 to 6.

Subsequent read-only queries validate the original
client/plugin/server/nonce token and its picker focus. A missing,
reloaded, detached, or refocused receiver still stops the swap. These
checks validate the captured requester rather than requiring a complete
all-client snapshot; stable tab IDs and full order checks remain in
place. No new plugin permission or runtime patch is needed.

Follow-up to #199.
@lanej lanej mentioned this pull request Nov 7, 2026
12 of 28 tasks
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