Skip to content

Commit 51e174c

Browse files
authored
Merge pull request #4693 from Hmbown/codex/v091-work-chrome-4688-90
fix(tui): Work summary lifecycle, actionable title, and top-area hierarchy
2 parents bbd0d8b + 84b24af commit 51e174c

4 files changed

Lines changed: 554 additions & 96 deletions

File tree

crates/tui/src/tui/app.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6687,6 +6687,8 @@ impl App {
66876687
self.history_index = None;
66886688
self.history_navigation_draft = None;
66896689
self.clear_input();
6690+
// Collapse recent-only Work chrome on the next accepted turn (#4688).
6691+
self.work_surface.note_user_turn_or_new_operation();
66906692
Some(input)
66916693
}
66926694

crates/tui/src/tui/work_surface/mod.rs

Lines changed: 43 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,12 @@ mod tests {
209209
let rows = super::model::project(&mut app);
210210

211211
assert!(
212-
rows[0]
213-
.label
214-
.starts_with("Work · 1 active · 0 needs input · 3 ready")
212+
rows[0].label.starts_with("Work · Running:")
213+
|| rows[0]
214+
.label
215+
.starts_with("Work · 1 active · 0 needs input · 3 ready"),
216+
"unexpected heading {}",
217+
rows[0].label
215218
);
216219
for index in 0..4 {
217220
assert!(
@@ -341,7 +344,7 @@ mod tests {
341344
let rows = super::model::project(&mut app);
342345
assert_eq!(
343346
rows[0].label,
344-
"Work · 0 active · 1 needs input · 0 ready · 0 recent"
347+
"Work · Needs input: Coordination Work · 1 blocked"
345348
);
346349
let row = rows
347350
.iter()
@@ -364,9 +367,11 @@ mod tests {
364367

365368
let rows = super::model::project(&mut app);
366369

367-
assert_eq!(
368-
rows[0].label,
369-
"Work · 1 active · 0 needs input · 1 ready · 1 recent"
370+
assert!(
371+
rows[0].label.starts_with("Work · Running:")
372+
|| rows[0].label.starts_with("Work · Ready:"),
373+
"expected actionable title heading, got {}",
374+
rows[0].label
370375
);
371376
assert_eq!(
372377
rows.iter()
@@ -431,19 +436,19 @@ mod tests {
431436
}
432437

433438
let rows = super::model::project(&mut app);
434-
let labels = rows
439+
let activity = rows
435440
.iter()
436-
.map(|row| row.label.as_str())
437-
.collect::<Vec<_>>();
438-
assert!(labels.contains(&"Read 1 files"), "{labels:?}");
439-
assert!(labels.contains(&"Searched 1 patterns"), "{labels:?}");
440-
assert!(labels.contains(&"Wrote 1 files"), "{labels:?}");
441-
assert!(!rows.iter().any(|row| row.detail.contains("/Users/alice")));
442-
let read = rows
443-
.iter()
444-
.find(|row| row.label == "Read 1 files")
445-
.expect("read activity row");
446-
assert_eq!(read.detail, "src/lib.rs");
441+
.find(|row| row.id.0 == "activity:aggregate")
442+
.expect("aggregated activity row");
443+
assert!(
444+
activity.label.contains("Read 1 files")
445+
&& activity.label.contains("Searched 1 patterns")
446+
&& activity.label.contains("Wrote 1 files"),
447+
"aggregated label: {}",
448+
activity.label
449+
);
450+
assert!(!activity.detail.contains("/Users/alice"));
451+
assert!(!activity.label.contains("WorkSurfaceState"));
447452
}
448453

449454
#[test]
@@ -725,9 +730,15 @@ mod tests {
725730
let rows = super::model::project(&mut app);
726731

727732
assert!(
728-
rows[0]
729-
.label
730-
.starts_with("Work · 0 active · 1 needs input · 0 ready · 0 recent"),
733+
rows[0].label.starts_with("Work · Needs input:")
734+
|| rows[0]
735+
.label
736+
.starts_with("Work · 0 active · 1 needs input · 0 ready · 0 recent"),
737+
"{}",
738+
rows[0].label
739+
);
740+
assert!(
741+
rows[0].label.contains("blocked") || rows[0].label.contains("needs input"),
731742
"{}",
732743
rows[0].label
733744
);
@@ -740,7 +751,11 @@ mod tests {
740751
restore_graph(&mut app, &graph);
741752

742753
let rows = super::model::project(&mut app);
743-
assert!(rows[0].label.contains("1 needs input"), "{}", rows[0].label);
754+
assert!(
755+
rows[0].label.contains("Needs input") || rows[0].label.contains("1 needs input"),
756+
"{}",
757+
rows[0].label
758+
);
744759
let row = rows.iter().find(|row| row.selectable).expect("stale row");
745760
assert_eq!(row.mark, "?");
746761
assert!(row.detail.starts_with("stale · operation"));
@@ -789,7 +804,11 @@ mod tests {
789804
restore_graph(&mut app, &graph);
790805

791806
let rows = super::model::project(&mut app);
792-
assert!(rows[0].label.contains("1 needs input"), "{}", rows[0].label);
807+
assert!(
808+
rows[0].label.contains("Needs input") || rows[0].label.contains("1 needs input"),
809+
"{}",
810+
rows[0].label
811+
);
793812
let row = rows
794813
.iter()
795814
.find(|row| row.selectable)

0 commit comments

Comments
 (0)