Released new version 1.1.1, using GE-Proton as the default environment.
This commit is contained in:
@@ -4,4 +4,4 @@ from .paths import AppPaths
|
||||
|
||||
__all__ = ["AppPaths", "__version__"]
|
||||
|
||||
__version__ = "1.1.0"
|
||||
__version__ = "1.1.1"
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user