Merge branch 'triage/1797-auto-model-resume-20260526-153051' into integration/v0.8.47-unified
This commit is contained in:
@@ -169,7 +169,7 @@ pub fn load(app: &mut App, path: Option<&str>) -> CommandResult {
|
||||
app.extend_history(cells_to_add);
|
||||
app.mark_history_updated();
|
||||
app.viewport.transcript_selection.clear();
|
||||
app.model.clone_from(&session.metadata.model);
|
||||
app.set_model_selection(session.metadata.model.clone());
|
||||
app.update_model_compaction_budget();
|
||||
app.workspace.clone_from(&session.metadata.workspace);
|
||||
app.session.total_tokens = u32::try_from(session.metadata.total_tokens).unwrap_or(u32::MAX);
|
||||
@@ -365,8 +365,8 @@ fn line_to_string(line: ratatui::text::Line<'static>) -> String {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::config::Config;
|
||||
use crate::tui::app::{App, TuiOptions, TurnCacheRecord};
|
||||
use crate::config::{Config, DEFAULT_TEXT_MODEL};
|
||||
use crate::tui::app::{App, ReasoningEffort, TuiOptions, TurnCacheRecord};
|
||||
use std::time::Instant;
|
||||
use tempfile::TempDir;
|
||||
|
||||
@@ -575,6 +575,31 @@ mod tests {
|
||||
assert!(matches!(result.action, Some(AppAction::SyncSession { .. })));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn load_auto_model_session_restores_auto_mode() {
|
||||
let tmpdir = TempDir::new().unwrap();
|
||||
let mut saved_app = create_test_app_with_tmpdir(&tmpdir);
|
||||
saved_app.set_model_selection("auto".to_string());
|
||||
saved_app.last_effective_model = Some("deepseek-v4-flash".to_string());
|
||||
saved_app.last_effective_reasoning_effort = Some(ReasoningEffort::Low);
|
||||
let save_path = tmpdir.path().join("auto_model.json");
|
||||
save(&mut saved_app, Some(save_path.to_str().unwrap()));
|
||||
|
||||
let mut app = create_test_app_with_tmpdir(&tmpdir);
|
||||
app.set_model_selection("deepseek-v4-flash".to_string());
|
||||
app.reasoning_effort = ReasoningEffort::High;
|
||||
let result = load(&mut app, Some(save_path.to_str().unwrap()));
|
||||
|
||||
assert!(!result.is_error);
|
||||
assert!(app.auto_model);
|
||||
assert_eq!(app.model, "auto");
|
||||
assert_eq!(app.model_selection_for_persistence(), "auto");
|
||||
assert_eq!(app.last_effective_model, None);
|
||||
assert_eq!(app.last_effective_reasoning_effort, None);
|
||||
assert_eq!(app.reasoning_effort, ReasoningEffort::Auto);
|
||||
assert_eq!(app.effective_model_for_budget(), DEFAULT_TEXT_MODEL);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn load_restores_artifact_registry() {
|
||||
let tmpdir = TempDir::new().unwrap();
|
||||
|
||||
@@ -4501,6 +4501,10 @@ impl App {
|
||||
};
|
||||
self.auto_model = auto_model;
|
||||
self.last_effective_model = None;
|
||||
self.last_effective_reasoning_effort = None;
|
||||
if auto_model {
|
||||
self.reasoning_effort = ReasoningEffort::Auto;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn model_selection_for_persistence(&self) -> String {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use super::*;
|
||||
use crate::config::{ApiProvider, Config};
|
||||
use crate::config::{ApiProvider, Config, DEFAULT_TEXT_MODEL};
|
||||
use crate::config_ui::{self, WebConfigSession, WebConfigSessionEvent};
|
||||
use crate::core::engine::mock_engine_handle;
|
||||
use crate::tui::active_cell::ActiveCell;
|
||||
@@ -4166,6 +4166,9 @@ fn apply_loaded_session_restores_concrete_model_mode() {
|
||||
fn apply_loaded_session_restores_auto_model_mode() {
|
||||
let mut app = create_test_app();
|
||||
app.set_model_selection("deepseek-v4-pro".to_string());
|
||||
app.reasoning_effort = ReasoningEffort::High;
|
||||
app.last_effective_model = Some("deepseek-v4-flash".to_string());
|
||||
app.last_effective_reasoning_effort = Some(ReasoningEffort::Low);
|
||||
let mut session = saved_session_with_messages(vec![
|
||||
text_message("user", "hello"),
|
||||
text_message("assistant", "hi"),
|
||||
@@ -4178,6 +4181,10 @@ fn apply_loaded_session_restores_auto_model_mode() {
|
||||
assert!(app.auto_model);
|
||||
assert_eq!(app.model, "auto");
|
||||
assert_eq!(app.model_selection_for_persistence(), "auto");
|
||||
assert_eq!(app.last_effective_model, None);
|
||||
assert_eq!(app.last_effective_reasoning_effort, None);
|
||||
assert_eq!(app.reasoning_effort, ReasoningEffort::Auto);
|
||||
assert_eq!(app.effective_model_for_budget(), DEFAULT_TEXT_MODEL);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user