From b173a86e34343a94c2941fa960b9c7e6a3bcb26a Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Sat, 16 May 2026 18:41:36 +0300 Subject: feat: add immediate new tab option refs #123 --- src/app/input/navigate.rs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'src/app/input') diff --git a/src/app/input/navigate.rs b/src/app/input/navigate.rs index 7eb5b8d9..f5a0bcaa 100644 --- a/src/app/input/navigate.rs +++ b/src/app/input/navigate.rs @@ -682,7 +682,14 @@ pub(super) fn execute_navigate_action(state: &mut AppState, action: NavigateActi state.next_agent(); leave_navigate_mode(state); } - NavigateAction::NewTab => super::modal::open_new_tab_dialog(state), + NavigateAction::NewTab => { + if state.prompt_new_tab_name { + super::modal::open_new_tab_dialog(state); + } else { + state.request_new_tab = true; + leave_navigate_mode(state); + } + } NavigateAction::RenameTab => super::modal::open_rename_active_tab(state, false), NavigateAction::PreviousTab => { state.previous_tab(); @@ -1206,6 +1213,19 @@ mod tests { assert_eq!(state.workspaces[0].tabs.len(), 1); } + #[test] + fn new_tab_action_can_skip_rename_dialog() { + let mut state = state_with_workspaces(&["test"]); + state.prompt_new_tab_name = false; + + execute_navigate_action(&mut state, NavigateAction::NewTab); + + assert_eq!(state.mode, Mode::Terminal); + assert!(!state.creating_new_tab); + assert!(state.request_new_tab); + assert!(state.requested_new_tab_name.is_none()); + } + #[test] fn persistence_mode_navigate_q_detaches_instead_of_quitting_server() { let mut state = crate::app::state::AppState::test_new(); -- cgit v1.2.3