fix(tui): the work dock no longer marks a killed or timed-out job done

CW-7087 (minor finding of the 2026-10-18 reproduction). In the dock's
finished rows, every status other than "failed" got the ✓ done mark, so a
job the user stopped showed ✓ next to "killed" while the status line said
"1 failed". The mark now follows the outcome: ✓ only for completed, ◆ with
the failure tone for failed and timed out, and the neutral · for killed
(a deliberate stop, neither success nor failure).

Verified: scripts/dev-test.sh tui work_surface finished background_rows
dock: 209 run, 209 passed; none of them pins this mapping. cargo fmt
--check clean. Not verified on screen: my tmux runs reached the kill
("run failed · sleep 300", "killed") but not the dock's finished rows; the
original reproduction captured the ✓ there (shots/17-stop.txt).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NBKbhx19BRbZtvWK8rVKjz
This commit is contained in:
CodeWhale BotandClaude Opus 5.5 committed 2026-10-18 02:38:28 -07:00
1 parent f5dba7d8b5
commit c9072cb72c
1 file changed
+5 -5
+5 -5
View File
@@ -1008,16 +1008,16 @@ fn finished_background_rows(app: &App) -> Vec<WorkRow> {
.iter()
.filter(|entry| !is_live_task_status(&entry.status))
.map(|entry| {
let failed = matches!(entry.status.as_str(), "failed");
let failed = matches!(entry.status.as_str(), "failed" | "timed_out");
let tone = if failed {
WorkTone::Failure
} else {
WorkTone::Muted
};
let mark = if failed {
crate::tui::glyphs::ATTENTION
} else {
crate::tui::glyphs::DONE
let mark = match entry.status.as_str() {
"completed" => crate::tui::glyphs::DONE,
_ if failed => crate::tui::glyphs::ATTENTION,
_ => crate::tui::glyphs::NEUTRAL,
};
if is_shell_entry(entry) {
let command = shell_command(entry);