mirror of
https://github.com/openai/codex.git
synced 2026-10-20 00:18:49 +00:00
Show Daybreak notices after the session header (#54097)
## What changed Emit the Daybreak notice after replacing or removing the placeholder session header so the notice follows the configured header. ## Testing Extend the resumed-history snapshot test to start with a placeholder header and verify the full transcript order: session header, Daybreak notice, and replayed user and assistant messages. GitOrigin-RevId: 536f717b2859d2fe319756f52123b4cd0407cb66
This commit is contained in:
@@ -118,9 +118,6 @@ impl ChatWidget {
|
||||
self.config.cwd = session.cwd.clone();
|
||||
self.config.model_provider_id = session.model_provider_id.clone();
|
||||
self.set_daybreak_enabled(self.daybreak_enabled);
|
||||
if self.daybreak_enabled && previous_thread_id != self.thread_id {
|
||||
self.add_info_message("Daybreak is on for new turns.".into(), /*hint*/ None);
|
||||
}
|
||||
if connector_scope_changed {
|
||||
self.invalidate_connector_scope();
|
||||
}
|
||||
@@ -235,6 +232,10 @@ impl ChatWidget {
|
||||
self.transcript.active_cell = None;
|
||||
self.bump_active_cell_revision();
|
||||
}
|
||||
// Emit notices after replacing or removing the placeholder header.
|
||||
if self.daybreak_enabled && previous_thread_id != self.thread_id {
|
||||
self.add_info_message("Daybreak is on for new turns.".into(), /*hint*/ None);
|
||||
}
|
||||
self.transcript.saw_copy_source_this_turn = false;
|
||||
self.refresh_skills_for_current_cwd(/*force_reload*/ true);
|
||||
self.refresh_connector_mentions(/*force_refresh*/ false);
|
||||
|
||||
@@ -70,7 +70,12 @@ async fn resumed_initial_messages_render_history() {
|
||||
);
|
||||
|
||||
// Session hydration can precede the account update on ChatGPT sign-in.
|
||||
chat.status_account_display = None;
|
||||
let (mut chat, mut rx, _ops) = make_chatwidget_manual(/*model_override*/ None).await;
|
||||
chat.set_feature_enabled(Feature::CliDaybreak, /*enabled*/ true);
|
||||
chat.show_welcome_banner = false;
|
||||
chat.local_settings.tui.show_tooltips = false;
|
||||
chat.config.cwd = configured.cwd.clone();
|
||||
chat.transcript.active_cell = Some(ChatWidget::placeholder_session_header_cell(&chat.config));
|
||||
configured.thread_id = ThreadId::new();
|
||||
chat.handle_thread_session(configured);
|
||||
assert!(chat.daybreak_enabled);
|
||||
@@ -92,27 +97,18 @@ async fn resumed_initial_messages_render_history() {
|
||||
ReplayKind::ResumeInitialMessages,
|
||||
);
|
||||
|
||||
let cells = drain_insert_history(&mut rx);
|
||||
let mut merged_lines = Vec::new();
|
||||
for lines in cells {
|
||||
let text = lines
|
||||
.iter()
|
||||
.flat_map(|line| line.spans.iter())
|
||||
.map(|span| span.content.clone())
|
||||
.collect::<String>();
|
||||
merged_lines.push(text);
|
||||
}
|
||||
|
||||
let text_blob = merged_lines.join("\n");
|
||||
assert!(
|
||||
text_blob.contains("hello from user"),
|
||||
"expected replayed user message",
|
||||
);
|
||||
assert!(
|
||||
text_blob.contains("assistant reply"),
|
||||
"expected replayed agent message",
|
||||
);
|
||||
insta::assert_snapshot!("resumed_daybreak_banner", merged_lines[0]);
|
||||
let history = drain_insert_history(&mut rx)
|
||||
.iter()
|
||||
.flatten()
|
||||
.map(ToString::to_string)
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n")
|
||||
.replace(CODEX_CLI_VERSION, "<VERSION>")
|
||||
.replace(
|
||||
&test_path_display("/home/user/project"),
|
||||
"/home/user/project",
|
||||
);
|
||||
insta::assert_snapshot!("resumed_daybreak_banner", history);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
+12
-1
@@ -1,5 +1,16 @@
|
||||
---
|
||||
source: tui/src/chatwidget/tests/history_replay.rs
|
||||
expression: "merged_lines[0]"
|
||||
assertion_line: 111
|
||||
expression: history
|
||||
---
|
||||
|
||||
>_ OpenAI Codex (v<VERSION>)
|
||||
/home/user/project
|
||||
|
||||
• Daybreak is on for new turns.
|
||||
|
||||
|
||||
› hello from user
|
||||
|
||||
|
||||
• assistant reply
|
||||
|
||||
Reference in New Issue
Block a user