mirror of
https://github.com/openai/codex.git
synced 2026-09-07 15:40:00 +00:00
Simplify TUI collaboration override updates
This commit is contained in:
@@ -3377,16 +3377,9 @@ impl ChatWidget {
|
||||
.map(|mut mask| {
|
||||
let name = mask.name.clone();
|
||||
let is_current = current_kind == mask.mode;
|
||||
if mask.mode == Some(ModeKind::Plan)
|
||||
&& let Some(effort) = self.config.plan_mode_reasoning_effort
|
||||
{
|
||||
mask.reasoning_effort = Some(Some(effort));
|
||||
}
|
||||
let collaboration_mode = self.current_collaboration_mode.apply_mask(&mask);
|
||||
let override_command = self.collaboration_mode_override_command(&mut mask);
|
||||
let actions: Vec<SelectionAction> = vec![Box::new(move |tx| {
|
||||
tx.send(AppEvent::CodexOp(AppCommand::override_collaboration_mode(
|
||||
collaboration_mode.clone(),
|
||||
)));
|
||||
tx.send(AppEvent::CodexOp(override_command.clone()));
|
||||
tx.send(AppEvent::UpdateCollaborationMode(mask.clone()));
|
||||
})];
|
||||
SelectionItem {
|
||||
@@ -3501,11 +3494,9 @@ impl ChatWidget {
|
||||
mask.mode = Some(ModeKind::Plan);
|
||||
mask.model = Some(model.clone());
|
||||
mask.reasoning_effort = Some(effort);
|
||||
let collaboration_mode = self.current_collaboration_mode.apply_mask(&mask);
|
||||
let override_command = self.collaboration_mode_override_command(&mut mask);
|
||||
move |tx| {
|
||||
tx.send(AppEvent::CodexOp(AppCommand::override_collaboration_mode(
|
||||
collaboration_mode.clone(),
|
||||
)));
|
||||
tx.send(AppEvent::CodexOp(override_command.clone()));
|
||||
tx.send(AppEvent::UpdateModel(model.clone()));
|
||||
tx.send(AppEvent::UpdatePlanModeReasoningEffort(effort));
|
||||
tx.send(AppEvent::PersistPlanModeReasoningEffort(effort));
|
||||
@@ -3516,11 +3507,9 @@ impl ChatWidget {
|
||||
mask.mode = Some(ModeKind::Plan);
|
||||
mask.model = Some(model.clone());
|
||||
mask.reasoning_effort = Some(effort);
|
||||
let collaboration_mode = self.current_collaboration_mode.apply_mask(&mask);
|
||||
let override_command = self.collaboration_mode_override_command(&mut mask);
|
||||
move |tx| {
|
||||
tx.send(AppEvent::CodexOp(AppCommand::override_collaboration_mode(
|
||||
collaboration_mode.clone(),
|
||||
)));
|
||||
tx.send(AppEvent::CodexOp(override_command.clone()));
|
||||
tx.send(AppEvent::UpdateModel(model.clone()));
|
||||
tx.send(AppEvent::UpdateReasoningEffort(effort));
|
||||
tx.send(AppEvent::UpdatePlanModeReasoningEffort(effort));
|
||||
@@ -5249,20 +5238,25 @@ impl ChatWidget {
|
||||
self.active_collaboration_mask.as_ref(),
|
||||
) {
|
||||
let mut next_mask = next_mask;
|
||||
if next_mask.mode == Some(ModeKind::Plan)
|
||||
&& let Some(effort) = self.config.plan_mode_reasoning_effort
|
||||
{
|
||||
next_mask.reasoning_effort = Some(Some(effort));
|
||||
}
|
||||
let collaboration_mode = self.current_collaboration_mode.apply_mask(&next_mask);
|
||||
self.app_event_tx
|
||||
.send(AppEvent::CodexOp(AppCommand::override_collaboration_mode(
|
||||
collaboration_mode,
|
||||
)));
|
||||
let override_command = self.collaboration_mode_override_command(&mut next_mask);
|
||||
self.app_event_tx.send(AppEvent::CodexOp(override_command));
|
||||
self.set_collaboration_mask(next_mask);
|
||||
}
|
||||
}
|
||||
|
||||
fn collaboration_mode_override_command(&self, mask: &mut CollaborationModeMask) -> AppCommand {
|
||||
self.apply_plan_reasoning_override_to_mask(mask);
|
||||
AppCommand::override_collaboration_mode(self.current_collaboration_mode.apply_mask(mask))
|
||||
}
|
||||
|
||||
fn apply_plan_reasoning_override_to_mask(&self, mask: &mut CollaborationModeMask) {
|
||||
if mask.mode == Some(ModeKind::Plan)
|
||||
&& let Some(effort) = self.config.plan_mode_reasoning_effort
|
||||
{
|
||||
mask.reasoning_effort = Some(Some(effort));
|
||||
}
|
||||
}
|
||||
|
||||
/// Update the active collaboration mask.
|
||||
///
|
||||
/// When collaboration modes are enabled and a preset is selected,
|
||||
@@ -5274,11 +5268,7 @@ impl ChatWidget {
|
||||
let previous_mode = self.active_mode_kind();
|
||||
let previous_model = self.current_model().to_string();
|
||||
let previous_effort = self.effective_reasoning_effort();
|
||||
if mask.mode == Some(ModeKind::Plan)
|
||||
&& let Some(effort) = self.config.plan_mode_reasoning_effort
|
||||
{
|
||||
mask.reasoning_effort = Some(Some(effort));
|
||||
}
|
||||
self.apply_plan_reasoning_override_to_mask(&mut mask);
|
||||
if mask.mode == Some(ModeKind::Plan) {
|
||||
self.dismissed_plan_mode_nudge_scopes
|
||||
.insert(self.plan_mode_nudge_scope());
|
||||
|
||||
@@ -19,7 +19,6 @@ use crossterm::event::KeyEvent;
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use super::ChatWidget;
|
||||
use crate::app_command::AppCommand;
|
||||
use crate::app_event::AppEvent;
|
||||
use crate::key_hint::KeyBindingListExt;
|
||||
|
||||
@@ -107,11 +106,9 @@ impl ChatWidget {
|
||||
mask.mode = Some(ModeKind::Plan);
|
||||
mask.model = Some(current_model);
|
||||
mask.reasoning_effort = Some(Some(next_effort));
|
||||
let collaboration_mode = self.current_collaboration_mode.apply_mask(&mask);
|
||||
self.app_event_tx
|
||||
.send(AppEvent::CodexOp(AppCommand::override_collaboration_mode(
|
||||
collaboration_mode,
|
||||
)));
|
||||
self.app_event_tx.send(AppEvent::CodexOp(
|
||||
self.collaboration_mode_override_command(&mut mask),
|
||||
));
|
||||
self.app_event_tx
|
||||
.send(AppEvent::UpdatePlanModeReasoningEffort(Some(next_effort)));
|
||||
} else {
|
||||
|
||||
@@ -89,14 +89,9 @@ impl ChatWidget {
|
||||
return false;
|
||||
}
|
||||
if let Some(mut mask) = collaboration_modes::plan_mask(self.model_catalog.as_ref()) {
|
||||
if let Some(effort) = self.config.plan_mode_reasoning_effort {
|
||||
mask.reasoning_effort = Some(Some(effort));
|
||||
}
|
||||
let collaboration_mode = self.current_collaboration_mode.apply_mask(&mask);
|
||||
self.app_event_tx
|
||||
.send(AppEvent::CodexOp(AppCommand::override_collaboration_mode(
|
||||
collaboration_mode,
|
||||
)));
|
||||
self.app_event_tx.send(AppEvent::CodexOp(
|
||||
self.collaboration_mode_override_command(&mut mask),
|
||||
));
|
||||
self.set_collaboration_mask(mask);
|
||||
true
|
||||
} else {
|
||||
|
||||
@@ -333,6 +333,12 @@ pub(super) fn drain_insert_history(
|
||||
out
|
||||
}
|
||||
|
||||
pub(super) fn drain_app_events(
|
||||
rx: &mut tokio::sync::mpsc::UnboundedReceiver<AppEvent>,
|
||||
) -> Vec<AppEvent> {
|
||||
std::iter::from_fn(|| rx.try_recv().ok()).collect()
|
||||
}
|
||||
|
||||
pub(super) fn lines_to_single_string(lines: &[ratatui::text::Line<'static>]) -> String {
|
||||
let mut s = String::new();
|
||||
for line in lines {
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
use super::*;
|
||||
use pretty_assertions::assert_eq;
|
||||
|
||||
fn drain_app_events(rx: &mut tokio::sync::mpsc::UnboundedReceiver<AppEvent>) -> Vec<AppEvent> {
|
||||
std::iter::from_fn(|| rx.try_recv().ok()).collect()
|
||||
}
|
||||
|
||||
fn assert_collaboration_override(events: &[AppEvent], expected: ModeKind) {
|
||||
assert!(
|
||||
events.iter().any(|event| match event {
|
||||
|
||||
@@ -7,10 +7,6 @@ use codex_app_server_protocol::MarketplaceRemoveResponse;
|
||||
use codex_features::Stage;
|
||||
use pretty_assertions::assert_eq;
|
||||
|
||||
fn drain_app_events(rx: &mut tokio::sync::mpsc::UnboundedReceiver<AppEvent>) -> Vec<AppEvent> {
|
||||
std::iter::from_fn(|| rx.try_recv().ok()).collect()
|
||||
}
|
||||
|
||||
fn assert_model_effort_override(
|
||||
events: &[AppEvent],
|
||||
expected_model: &str,
|
||||
|
||||
Reference in New Issue
Block a user