mirror of
https://github.com/openai/codex.git
synced 2026-04-24 14:45:27 +00:00
Apply default collaboration preset when modes are enabled
This commit is contained in:
@@ -73,6 +73,8 @@ pub(crate) struct FooterProps {
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
||||
pub(crate) enum CollaborationModeIndicator {
|
||||
Plan,
|
||||
PairProgramming,
|
||||
Execute,
|
||||
}
|
||||
|
||||
const MODE_CYCLE_HINT: &str = "shift+tab to cycle";
|
||||
@@ -87,6 +89,10 @@ impl CollaborationModeIndicator {
|
||||
};
|
||||
match self {
|
||||
CollaborationModeIndicator::Plan => format!("Plan mode{suffix}"),
|
||||
CollaborationModeIndicator::PairProgramming => {
|
||||
format!("Pair Programming mode{suffix}")
|
||||
}
|
||||
CollaborationModeIndicator::Execute => format!("Execute mode{suffix}"),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,6 +100,8 @@ impl CollaborationModeIndicator {
|
||||
let label = self.label(show_cycle_hint);
|
||||
match self {
|
||||
CollaborationModeIndicator::Plan => Span::from(label).magenta(),
|
||||
CollaborationModeIndicator::PairProgramming => Span::from(label).cyan(),
|
||||
CollaborationModeIndicator::Execute => Span::from(label).dim(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5169,7 +5169,11 @@ impl ChatWidget {
|
||||
mode: ModeKind::Default,
|
||||
settings,
|
||||
};
|
||||
self.active_collaboration_mask = None;
|
||||
self.active_collaboration_mask = if enabled {
|
||||
collaboration_modes::default_mask(self.models_manager.as_ref())
|
||||
} else {
|
||||
None
|
||||
};
|
||||
self.update_collaboration_mode_indicator();
|
||||
self.refresh_model_display();
|
||||
self.request_redraw();
|
||||
|
||||
@@ -2475,7 +2475,7 @@ async fn set_reasoning_effort_updates_active_collaboration_mask() {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn collab_mode_is_not_sent_until_selected() {
|
||||
async fn collab_mode_is_sent_after_enabling() {
|
||||
let (mut chat, _rx, mut op_rx) = make_chatwidget_manual(None).await;
|
||||
chat.thread_id = Some(ThreadId::new());
|
||||
chat.set_feature_enabled(Feature::CollaborationModes, true);
|
||||
@@ -2485,12 +2485,14 @@ async fn collab_mode_is_not_sent_until_selected() {
|
||||
chat.handle_key_event(KeyEvent::from(KeyCode::Enter));
|
||||
match next_submit_op(&mut op_rx) {
|
||||
Op::UserTurn {
|
||||
collaboration_mode,
|
||||
collaboration_mode:
|
||||
Some(CollaborationMode {
|
||||
mode: ModeKind::Default,
|
||||
..
|
||||
}),
|
||||
personality: None,
|
||||
..
|
||||
} => {
|
||||
assert_eq!(collaboration_mode, None);
|
||||
}
|
||||
} => {}
|
||||
other => {
|
||||
panic!("expected Op::UserTurn, got {other:?}")
|
||||
}
|
||||
@@ -2498,9 +2500,42 @@ async fn collab_mode_is_not_sent_until_selected() {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn collab_mode_enabling_keeps_custom_until_selected() {
|
||||
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(None).await;
|
||||
async fn collab_mode_toggle_on_applies_default_preset() {
|
||||
let (mut chat, _rx, mut op_rx) = make_chatwidget_manual(None).await;
|
||||
chat.thread_id = Some(ThreadId::new());
|
||||
|
||||
chat.bottom_pane
|
||||
.set_composer_text("before toggle".to_string(), Vec::new(), Vec::new());
|
||||
chat.handle_key_event(KeyEvent::from(KeyCode::Enter));
|
||||
match next_submit_op(&mut op_rx) {
|
||||
Op::UserTurn {
|
||||
collaboration_mode: None,
|
||||
personality: None,
|
||||
..
|
||||
} => {}
|
||||
other => panic!("expected Op::UserTurn without collaboration_mode, got {other:?}"),
|
||||
}
|
||||
|
||||
chat.set_feature_enabled(Feature::CollaborationModes, true);
|
||||
|
||||
chat.bottom_pane
|
||||
.set_composer_text("after toggle".to_string(), Vec::new(), Vec::new());
|
||||
chat.handle_key_event(KeyEvent::from(KeyCode::Enter));
|
||||
match next_submit_op(&mut op_rx) {
|
||||
Op::UserTurn {
|
||||
collaboration_mode:
|
||||
Some(CollaborationMode {
|
||||
mode: ModeKind::Default,
|
||||
..
|
||||
}),
|
||||
personality: None,
|
||||
..
|
||||
} => {}
|
||||
other => {
|
||||
panic!("expected Op::UserTurn with default collaboration_mode, got {other:?}")
|
||||
}
|
||||
}
|
||||
|
||||
assert_eq!(chat.active_collaboration_mode_kind(), ModeKind::Default);
|
||||
assert_eq!(chat.current_collaboration_mode().mode, ModeKind::Default);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user