Released new version 1.1.1, using GE-Proton as the default environment.

This commit is contained in:
2026-10-23 21:34:51 +02:00
parent d75c345d36
commit 770bbb8a88
9 changed files with 60 additions and 47 deletions

View File

@@ -4,4 +4,4 @@ from .paths import AppPaths
__all__ = ["AppPaths", "__version__"]
__version__ = "1.1.0"
__version__ = "1.1.1"

View File

@@ -861,11 +861,9 @@ def _source_game(
def _load_or_default_settings(paths: AppPaths, *, persist: bool) -> Settings:
if paths.settings_file.is_file():
return load_settings(paths)
if persist:
return ensure_settings(paths)
return Settings()
return load_settings(paths)
def _runner(paths: AppPaths, operation: str, dry_run: bool) -> CommandRunner:

View File

@@ -443,7 +443,7 @@ def parse_native_log_lines(lines: Iterable[str]) -> NativeLogAnalysis:
):
analysis.out_of_memory_effect_paths.append(value)
if "Stage without new stage" in raw:
if "stage without new stage" in raw.casefold():
analysis.stage_without_new_stage = True
analysis.events.append(
LogEvent("stage_without_new_stage", line_number, raw, timestamp)

View File

@@ -18,7 +18,9 @@ from .update_resolver import SUPPORTED_CHANNELS
SETTINGS_SCHEMA = 1
DEFAULT_GAME_RUNTIME = "ge-proton"
_TITLE_FRAME_DEFAULT_MIGRATION_KEY = "title_frame_default_migrated"
_GE_PROTON_DEFAULT_MIGRATION_KEY = "ge_proton_default_migrated"
UI_SCALE_CHOICES = frozenset({"auto", "100", "125", "150", "175", "200"})
_RETIRED_SETTINGS = frozenset(
{
@@ -43,7 +45,7 @@ class Settings:
game_crash_dump_upload_enabled: bool = False
borderless: bool = False
suppress_unresponsive_warnings: bool = True
runtime: str = "auto"
runtime: str = DEFAULT_GAME_RUNTIME
proton_sync: str = "auto"
proton_path: str | None = None
renderer: str = "auto"
@@ -188,7 +190,7 @@ def _settings_from_object(value: dict[str, object]) -> Settings:
"suppress_unresponsive_warnings",
True,
),
runtime=_string(value, "runtime", "auto"),
runtime=_string(value, "runtime", DEFAULT_GAME_RUNTIME),
proton_sync=_string(value, "proton_sync", "auto"),
proton_path=proton_path,
renderer=renderer,
@@ -201,6 +203,12 @@ def _settings_from_object(value: dict[str, object]) -> Settings:
update_channel=_string(value, "update_channel", "stable"),
)
_validate(settings)
# Move existing installations to the modern WoW64 profile once. Validate the
# saved runtime first so migration cannot hide malformed settings. New saves
# carry the marker, allowing users to choose another runtime afterwards.
# Keep the optional Proton path for PTR and future explicit legacy choices.
if not _boolean(value, _GE_PROTON_DEFAULT_MIGRATION_KEY, False):
return replace(settings, runtime=DEFAULT_GAME_RUNTIME)
return settings
@@ -237,6 +245,7 @@ def _settings_need_migration(value: dict[str, object]) -> bool:
value.get("schema") != SETTINGS_SCHEMA
or not _SETTINGS_FIELD_NAMES.issubset(value)
or value.get(_TITLE_FRAME_DEFAULT_MIGRATION_KEY) is not True
or value.get(_GE_PROTON_DEFAULT_MIGRATION_KEY) is not True
or bool(_RETIRED_SETTINGS.intersection(value))
or _legacy_renderer_assignment(value.get("proton_path")) is not None
)
@@ -279,6 +288,7 @@ def _write_settings(
payload.update(asdict(settings))
payload["schema"] = SETTINGS_SCHEMA
payload[_TITLE_FRAME_DEFAULT_MIGRATION_KEY] = True
payload[_GE_PROTON_DEFAULT_MIGRATION_KEY] = True
temporary = paths.settings_file.with_name(
f".{paths.settings_file.name}.{os.getpid()}.{threading.get_ident()}."
f"{secrets.token_hex(8)}.tmp"

View File

@@ -26,8 +26,8 @@ from ..viewmodels.downloader import (
RUNTIME_LABELS: dict[str, str] = {
"Automatic (recommended)": "auto",
"GE-Proton — Modern WoW64 via UMU": "ge-proton",
"GE-Proton — Modern WoW64 (recommended)": "ge-proton",
"Automatic": "auto",
"Proton 7 — Steam Runtime container": "proton7-container",
"Proton 7 — Direct": "proton7",
"UMU Launcher": "umu",
@@ -431,7 +431,7 @@ def open_settings_dialog(
rendering_card.columnconfigure(1, weight=1)
rendering_hint = ttk.Label(
rendering_card,
text="Automatic uses GE-Proton with modern WoW64 for Babel when UMU is available.",
text="GE-Proton with modern WoW64 is recommended for Babel. PTR Babel uses Proton 7.",
style="SettingsHint.TLabel",
wraplength=360,
)