diff --git a/crates/app-iced/src/app/diag.rs b/crates/app-iced/src/app/diag.rs index ffb2693..658d231 100644 --- a/crates/app-iced/src/app/diag.rs +++ b/crates/app-iced/src/app/diag.rs @@ -94,7 +94,10 @@ mod tests { #[test] fn lines_without_a_tag_fall_back_to_the_default_scope() { assert_eq!(split_scope("没有标签的一行"), ("app", "没有标签的一行")); - assert_eq!(split_scope("[a b] 空白不是标签"), ("app", "[a b] 空白不是标签")); + assert_eq!( + split_scope("[a b] 空白不是标签"), + ("app", "[a b] 空白不是标签") + ); } /// 守门②:**启动器日志的滚动真的会发生**,写超上限之后文件仍然有界。 diff --git a/crates/app-iced/src/app/logs_folder.rs b/crates/app-iced/src/app/logs_folder.rs index eba9a6e..25ca4ab 100644 --- a/crates/app-iced/src/app/logs_folder.rs +++ b/crates/app-iced/src/app/logs_folder.rs @@ -68,7 +68,8 @@ pub(crate) fn prepare(dir: &Path) -> Result { /// 返回的文本永远带路径(`...logs` 那一串),可以直接贴给用户/贴进 issue。 pub(crate) fn open() -> Result { let dir = logs_dir().ok_or_else(|| { - "日志目录:数据根没解析出来(启动器拿不到自己所在的目录;用 --data-dir 指定一个)".to_string() + "日志目录:数据根没解析出来(启动器拿不到自己所在的目录;用 --data-dir 指定一个)" + .to_string() })?; let dir = prepare(&dir)?; crate::app::dialog::export::open_dir(&dir)?; diff --git a/crates/app-iced/src/app/update/settings/java.rs b/crates/app-iced/src/app/update/settings/java.rs index 3ebc6c7..69d8671 100644 --- a/crates/app-iced/src/app/update/settings/java.rs +++ b/crates/app-iced/src/app/update/settings/java.rs @@ -21,8 +21,8 @@ //! `requirement_for(mc_version)` 是 core 的纯函数(静态表,读不到版本 JSON 时也成立)。 //! 页面自己不看盘:本文件在每次 hydrate 时算好 [`Context`] 塞进状态,渲染器只负责画。 -use crate::app::diag::diag; use super::super::*; +use crate::app::diag::diag; use crate::pages::settings::java::{Context, Layer, Notice, Requirement}; diff --git a/crates/app-iced/src/pages/settings/logs_row.rs b/crates/app-iced/src/pages/settings/logs_row.rs index 83b66ed..a2eef3e 100644 --- a/crates/app-iced/src/pages/settings/logs_row.rs +++ b/crates/app-iced/src/pages/settings/logs_row.rs @@ -103,8 +103,8 @@ fn action_button<'a>(ui: &'a Ui, label: &'a str, message: Message) -> Element<'a .height(height) .padding(Padding::from([0.0, ui.space(Space::X3)])) .style(move |_theme: &IcedTheme, status| { - let background = matches!(status, button::Status::Hovered | button::Status::Pressed) - .then(|| { + let background = + matches!(status, button::Status::Hovered | button::Status::Pressed).then(|| { Background::Color(ui.state_over(StateLayer::Hover, Role::OnSurface, Role::Surface)) }); button::Style { diff --git a/crates/app-iced/src/pages/settings/tests/general_section.rs b/crates/app-iced/src/pages/settings/tests/general_section.rs index ad7894e..289eb15 100644 --- a/crates/app-iced/src/pages/settings/tests/general_section.rs +++ b/crates/app-iced/src/pages/settings/tests/general_section.rs @@ -228,7 +228,11 @@ fn the_logs_row_names_the_real_paths_and_the_real_limit() { &format!("{LOGS_DIR}/{GAME_LOG_DIR}/"), "data/agent/sessions", ] { - assert!(hint.contains(needle), "{} 缺 `{needle}`:{hint}", lang.tag()); + assert!( + hint.contains(needle), + "{} 缺 `{needle}`:{hint}", + lang.tag() + ); } assert!(!hint.contains('⟪'), "{} 目录里缺词:{hint}", lang.tag()); assert!( diff --git a/crates/cli/src/commands/sessions.rs b/crates/cli/src/commands/sessions.rs index de26875..d44fdf2 100644 --- a/crates/cli/src/commands/sessions.rs +++ b/crates/cli/src/commands/sessions.rs @@ -241,10 +241,7 @@ fn find_entry(ctx: &Ctx, key: &str) -> Result { fn event_path(ctx: &Ctx, entry: &SessionIndexEntry) -> std::path::PathBuf { // M188:新会话在 `logs/game/`,旧会话在 `data/agent/sessions/game/`(只读兼容)。 // 先看新根,再回落旧家;两处都没有就把新根路径交出去(错误信息据此说「该去哪找」)。 - let primary = ctx - .sessions_root() - .join(GAME_LOG_DIR) - .join(&entry.log_path); + let primary = ctx.sessions_root().join(GAME_LOG_DIR).join(&entry.log_path); if primary.is_file() { return primary; } diff --git a/crates/presenter/src/host/logs_tests.rs b/crates/presenter/src/host/logs_tests.rs index e83c5a7..37fa192 100644 --- a/crates/presenter/src/host/logs_tests.rs +++ b/crates/presenter/src/host/logs_tests.rs @@ -127,7 +127,11 @@ fn legacy_sessions_are_still_listed_and_openable() { let env = HostEnv::at_root(&root); let legacy_game = env.legacy_sessions_root().join("game"); std::fs::create_dir_all(&legacy_game).expect("建旧家目录"); - let entry = sample_entry("old-session", "old-session.jsonl", "2026-11-01T10:00:00.000Z"); + let entry = sample_entry( + "old-session", + "old-session.jsonl", + "2026-11-01T10:00:00.000Z", + ); session_index::append( &session_index::index_path(&env.legacy_sessions_root()), &entry, @@ -144,7 +148,10 @@ fn legacy_sessions_are_still_listed_and_openable() { listed.iter().any(|session| session.id == "old-session"), "旧家的会话没有出现在列表里:{listed:?}" ); - assert_eq!(event_path(&env, &entry), legacy_game.join("old-session.jsonl")); + assert_eq!( + event_path(&env, &entry), + legacy_game.join("old-session.jsonl") + ); let (lines, _) = open(&env, "old-session"); assert!( lines.iter().any(|line| line.text.contains("旧会话这一行")), @@ -196,8 +203,11 @@ fn the_new_root_wins_when_both_indexes_know_the_same_id() { let legacy_game = env.legacy_sessions_root().join("game"); std::fs::create_dir_all(&legacy_game).expect("建旧家目录"); let old = sample_entry("same", "same.jsonl", "2026-10-01T00:00:00.000Z"); - session_index::append(&session_index::index_path(&env.legacy_sessions_root()), &old) - .expect("写旧索引"); + session_index::append( + &session_index::index_path(&env.legacy_sessions_root()), + &old, + ) + .expect("写旧索引"); std::fs::write( legacy_game.join("same.jsonl"), "{\"kind\":\"stdout\",\"payload\":{\"line\":\"旧\"}}\n", @@ -235,7 +245,10 @@ fn the_location_receipt_names_both_roots_and_the_policy() { std::fs::write(legacy_game.join("a.jsonl"), "{}\n").expect("写旧文件"); let path = note_location(&env).expect("记录应当写得出来"); - assert_eq!(path, env.logs_dir().join(super::location::SESSION_LOCATION_FILE)); + assert_eq!( + path, + env.logs_dir().join(super::location::SESSION_LOCATION_FILE) + ); let value: serde_json::Value = serde_json::from_slice(&std::fs::read(&path).expect("读记录")).expect("记录是 JSON"); assert_eq!(value["policy"], "read-only-compat");