Repository navigation
fix(tabs): route hotkey duplicate through the tab menu duplicate path - #483
Merged
Merged
Conversation
The hotkey used its own HomePage::duplicate_active_tab, reopening tabs by connection kind: local terminals fell back to default settings (losing the CWD and any custom/WSL profile), SSH ignored the current directory, temporary connections silently did nothing when no StoredConnection matched, and the copy never subscribed to the terminal's OpenSftp/SaveAsConnection events. Duplicate now delegates to TabContainer::duplicate_active_tab and emits TabContainerEvent::TabDuplicated so HomePage can attach the terminal event subscriptions to the copy. Also clear the inherited _ONETCLI_SHELL_INTEGRATED for new sessions: a host process launched from a Navop terminal carries it, the integration script's re-entry guard returns early, OSC 7 stops being reported, and duplicated tabs lose the CWD.
prepare_shell_integration_writes_lf_only_script and zsh_shell_integration_sources_generated_zshrc both used $TMPDIR/onetcli-<pid> and removed it at start and end, so running them in parallel made one delete the other's files (flaky NotFound / missing script). The body now lives in prepare_shell_integration_in(session_dir, shell); the production wrapper still passes the process-level directory. Both tests take their own tempfile::tempdir() (plus a temp HOME for zsh).
feigeCode
added a commit
that referenced
this pull request
Oct 31, 2026
冲突解决:main/src/home/home_tabs.rs 保留三产品拆分布局,快捷键复制改走 TabContainer::duplicate_active_tab(等价 #483:与标签菜单共用复制路径,终端保留当前工作目录, 并对任何可复制标签生效),复制出的终端标签在 main/src/home_tab/lifecycle.rs 补回 OpenSftp / SaveAsConnection 订阅;随之删除不再被使用的 ShellExtras::duplicate_terminal_tab 契约。 origin/main 上的 #482 / #483 / #484 其余改动(标签收缩、Esc 只在编辑器上下文生效、 terminal 测试隔离)均无冲突合入。 顺带修 main/src/home/home_tabs.rs 里 notify_unsupported 的属性与文档注释空行(clippy 告警)。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR fixes tab duplication so a duplicated tab preserves the working directory and connection settings of the source tab.
Previously the hotkey duplicated the active tab through its own
HomePage::duplicate_active_tabpath, which reopened tabs by connection kind and had several problems:StoredConnectionmatched.OpenSftp/SaveAsConnectionevents.Now duplication delegates to
TabContainer::duplicate_active_tab(the same path the tab context menu uses) and emitsTabContainerEvent::TabDuplicated, soHomePagecan attach the terminal event subscriptions to the copy. The inherited_ONETCLI_SHELL_INTEGRATEDis also cleared for new sessions: a host process launched from a Navop terminal carries this variable, the integration script's re-entry guard returns early, OSC 7 stops being reported, and duplicated tabs lose the CWD.In addition, two shell-integration tests are made parallel-safe by isolating them in their own
tempfile::tempdir()directories instead of sharing the process-level$TMPDIR/onetcli-<pid>(which made one test delete the other's files).How to Test
cdinto a project directory.Checklist
cargo runfor story tests related to the changes.