From 2e351ccf6930ff4823f55b581308222229fe6684 Mon Sep 17 00:00:00 2001 From: asepharyana Date: Mon, 13 Jul 2026 14:39:29 +0700 Subject: [PATCH] feat: update overlay handling in apply_action and remove mouse capture from terminal execution --- src/app/runtime/actions/mod.rs | 8 ++++++++ src/main.rs | 10 ++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/app/runtime/actions/mod.rs b/src/app/runtime/actions/mod.rs index 7381eb1..5c27716 100644 --- a/src/app/runtime/actions/mod.rs +++ b/src/app/runtime/actions/mod.rs @@ -389,6 +389,11 @@ pub fn apply_action(state: &mut AppStateRest, action: Action) { state.workflow_engine.agents.clear(); state.workflow_engine.findings.clear(); } + if message.to_lowercase().contains("complete") { + if state.misc.overlay == Overlay::Workflow { + state.misc.overlay = Overlay::None; + } + } state.push_toast(Toast { kind: ToastKind::Info, message: message.clone(), @@ -526,6 +531,9 @@ pub fn apply_action(state: &mut AppStateRest, action: Action) { } if turn_finished { maybe_trigger_review(state); + if state.misc.overlay == Overlay::Workflow { + state.misc.overlay = Overlay::None; + } } if turn_finished || state.dirty { state.dirty = true; diff --git a/src/main.rs b/src/main.rs index 5dc5425..839835b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,7 +12,6 @@ use std::sync::Mutex; use anyhow::Result; use crossterm::execute; use crossterm::terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}; -use crossterm::event::{EnableMouseCapture, DisableMouseCapture}; use ratatui::backend::CrosstermBackend; use ratatui::Terminal; @@ -118,7 +117,7 @@ fn run_single_process() -> Result<()> { enable_raw_mode()?; let mut stdout = io::stdout(); - execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?; + execute!(stdout, EnterAlternateScreen)?; let backend = CrosstermBackend::new(stdout); let mut terminal = Terminal::new(backend)?; terminal.clear()?; @@ -126,7 +125,7 @@ fn run_single_process() -> Result<()> { let run_result = run_loop(&mut state, &mut terminal); let mut restore_stdout = io::stdout(); - let _ = execute!(restore_stdout, LeaveAlternateScreen, DisableMouseCapture); + let _ = execute!(restore_stdout, LeaveAlternateScreen); let _ = disable_raw_mode(); if let Err(e) = run_result { @@ -468,7 +467,7 @@ fn run_attach(session_id: &str) -> Result<()> { enable_raw_mode()?; let mut stdout = io::stdout(); - execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?; + execute!(stdout, EnterAlternateScreen)?; let backend = CrosstermBackend::new(stdout); let mut terminal = Terminal::new(backend)?; terminal.clear()?; @@ -556,7 +555,7 @@ fn run_attach(session_id: &str) -> Result<()> { })?; } - let _ = execute!(io::stdout(), LeaveAlternateScreen, DisableMouseCapture); + let _ = execute!(io::stdout(), LeaveAlternateScreen); let _ = disable_raw_mode(); let _ = client_state.settings.save(); @@ -580,7 +579,6 @@ fn run_loop( if let Err(ref _e) = result { let _ = terminal.clear(); - let _ = execute!(io::stdout(), DisableMouseCapture); let _ = disable_raw_mode(); let _ = execute!(io::stdout(), LeaveAlternateScreen); }