feat(launch): M157 实例级启动参数(五项回落 + graphicsBackend 三态)

core: 新增 game/launch_overrides(LaunchOverrides 五项 All-Option + 三级回落 + 文本补丁校验)与 launch/overrides(拼装落位:全局 java.extra_args 进 user.jvm、实例 jvmArgs 进 override_jvm、gameArgs 进 user.game、memory 进 -Xmx、backend 进 --graphicsBackend 并复用既有版本门槛告警);实例 schema 登记 launch.* 五键。

presenter: dto/LaunchArgsView+LaunchArgsPatch,主机侧读/写与门槛判定(backend_allowed),AppCommand::SetInstanceLaunchArgs。

cli: 新命令 instances launch-args(读/写/--clear),launch 装配链消费回落值。

app-iced: 实例详情页「启动参数」区(JVM/游戏参数、内存、Java、三态后端 chips + 灰化提示 + 保存/恢复),表单状态归 App、i18n 中英文案同步。
This commit is contained in:
AskaEth committed 2026-11-07 10:36:35 +08:00
1 parent d68523b02a
commit e2021645d7
56 files changed
+3776 -607

No files matched your search

+29 -2
View File
@@ -4,8 +4,8 @@
use crate::dto::{
AncientKind, ChatMessage, ChatRole, Diagnosis, DiagnosisReport, InstanceRuntime,
InstanceSummary, LoaderInfo, LoaderKind, LogLevel, LogLine, LogOutcome, LogSession, SessionId,
ToolCallView, VersionCategory, VersionKind, VersionSummary,
InstanceSummary, LaunchArgsView, LoaderInfo, LoaderKind, LogLevel, LogLine, LogOutcome,
LogSession, SessionId, ToolCallView, VersionCategory, VersionKind, VersionSummary,
};
/// P0 演示实例:覆盖空闲 / 失败两种磁贴状态(运行中由启动脚本产生)。
@@ -25,6 +25,7 @@ pub fn mock_instances() -> Vec<InstanceSummary> {
isolation: "isolated".to_string(),
version_id: "1.20.4".to_string(),
version_present: true,
launch: mock_launch(),
},
InstanceSummary {
id: "vanilla-latest".to_string(),
@@ -40,6 +41,7 @@ pub fn mock_instances() -> Vec<InstanceSummary> {
isolation: "isolated".to_string(),
version_id: "1.21.9".to_string(),
version_present: true,
launch: mock_launch(),
},
InstanceSummary {
id: "ancient-1.7.10".to_string(),
@@ -55,6 +57,7 @@ pub fn mock_instances() -> Vec<InstanceSummary> {
isolation: "shared".to_string(),
version_id: "1.7.10".to_string(),
version_present: false,
launch: mock_launch(),
},
InstanceSummary {
id: "modded-dev".to_string(),
@@ -72,6 +75,7 @@ pub fn mock_instances() -> Vec<InstanceSummary> {
isolation: "isolated".to_string(),
version_id: "1.21.1-neoforge-21.1.72".to_string(),
version_present: true,
launch: mock_launch(),
},
]
}
@@ -236,3 +240,26 @@ mod tests {
assert!(mock_versions_for(VersionCategory::Mod).is_empty());
}
}
/// 演示用的启动参数视图(M157):一条真实形状的实例(有 JVM 参数、Vulkan、门槛放行)。
fn mock_launch() -> LaunchArgsView {
LaunchArgsView {
instance_id: "survival".to_string(),
jvm_args: "-XX:+UseG1GC".to_string(),
game_args: String::new(),
memory_mb: Some(4096),
memory_effective_mb: 4096,
java_path: String::new(),
java_effective: "C:/Java/temurin-21/bin/java.exe".to_string(),
graphics_backend: "vulkan".to_string(),
graphics_backend_effective: "vulkan".to_string(),
graphics_backend_allowed: true,
mc_version: "26.2-snapshot-2".to_string(),
graphics_backend_min_version: "26.2-snapshot-2".to_string(),
graphics_backend_options: vec![
"default".to_string(),
"opengl".to_string(),
"vulkan".to_string(),
],
}
}