Problem
Killer backends report a delivered-but-ineffective SIGTERM as `success=true, process_still_running=true` (e.g. src/platform/linux/linux_process_killer.cpp:178-182).
`TuiApp::execute_kill()` (src/ui/tui/tui_app_navigation.cpp:241) checks `if (result.success)` first and closes the dialog — the `else if (result.process_still_running && !force)` branch that would offer Force Kill can never be reached, since `success` is already true.
Compare to the GUI's `ImGuiApp::execute_kill()` (src/ui/imgui/imgui_kill_dialog_view.cpp:41), which correctly requires `result.success && !result.process_still_running` before closing. The promised SIGTERM→SIGKILL escalation only works in the GUI.
Fix
Make TUI's close condition match the GUI's: `if (result.success && !result.process_still_running)`. Longer-term, consider a single unambiguous result enum (terminated / still_running / partial_failure / failed) consumed identically by both frontends instead of the two-bool combination.
Problem
Killer backends report a delivered-but-ineffective SIGTERM as `success=true, process_still_running=true` (e.g. src/platform/linux/linux_process_killer.cpp:178-182).
`TuiApp::execute_kill()` (src/ui/tui/tui_app_navigation.cpp:241) checks `if (result.success)` first and closes the dialog — the `else if (result.process_still_running && !force)` branch that would offer Force Kill can never be reached, since `success` is already true.
Compare to the GUI's `ImGuiApp::execute_kill()` (src/ui/imgui/imgui_kill_dialog_view.cpp:41), which correctly requires `result.success && !result.process_still_running` before closing. The promised SIGTERM→SIGKILL escalation only works in the GUI.
Fix
Make TUI's close condition match the GUI's: `if (result.success && !result.process_still_running)`. Longer-term, consider a single unambiguous result enum (terminated / still_running / partial_failure / failed) consumed identically by both frontends instead of the two-bool combination.