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

@@ -1,6 +1,6 @@
# PristonTale EU for Linux
Version 1.0.8 installs, updates, repairs, and launches PristonTale EU through a
Version 1.1.1 installs, updates, repairs, and launches PristonTale EU through a
native Linux dashboard. Game files come directly from the publisher and are not
included in this archive.
@@ -15,11 +15,11 @@ Then run:
```text
openssl pkey -pubin -in launcher-update-public.pem -outform DER | sha256sum
openssl dgst -sha256 -verify launcher-update-public.pem \
-signature pristontale-eu-linux-installer-v1-0-8.tar.gz.sig \
pristontale-eu-linux-installer-v1-0-8.tar.gz
sha256sum -c pristontale-eu-linux-installer-v1-0-8.tar.gz.sha256
tar -xzf pristontale-eu-linux-installer-v1-0-8.tar.gz
cd pristontale-eu-linux-installer-v1-0-8
-signature pristontale-eu-linux-installer-v1-1-1.tar.gz.sig \
pristontale-eu-linux-installer-v1-1-1.tar.gz
sha256sum -c pristontale-eu-linux-installer-v1-1-1.tar.gz.sha256
tar -xzf pristontale-eu-linux-installer-v1-1-1.tar.gz
cd pristontale-eu-linux-installer-v1-1-1
./install.sh
```
@@ -34,10 +34,15 @@ Existing installations at the previous default location are preserved during
upgrades. The installer adds **PristonTale EU** to the application menu and
installs the `pristontale-eu` command in `~/.local/bin`.
Steam Proton 7.0 is discovered in both the default Steam library and secondary
libraries registered with the Steam client. If Proton uses an unregistered
manual layout, open **Settings → Optional Overrides** and select the exact
`Proton 7.0/proton` script.
GE-Proton through the managed UMU helper is the default runtime for the current
game, with modern WoW64 and a separate compatibility prefix. Existing settings
switch to GE-Proton once on startup; users can choose another runtime afterwards.
Renderer preferences and saved Proton paths are retained. PTR continues to use
Proton 7.0. Proton 7.0 is discovered in both
the default Steam library and secondary libraries registered with Steam. For an
unregistered manual layout, select its exact `proton` script under
**Settings → Optional Overrides**. Use the renderer setting to choose DXVK or
WineD3D; environment assignments do not belong in the Proton script path.
## Use

View File

@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "PTEU-Linux-Launcher"
version = "1.0.8"
version = "1.1.1"
description = "PristonTale EU Linux installer, clean launcher, and diagnostic harness"
requires-python = ">=3.11"
dependencies = []

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,
)

View File

@@ -2,16 +2,16 @@
"application": "PristonTale-EU",
"archive": {
"layout": "flat",
"name": "PristonTale-EU-1.1.0.tar.gz",
"sha256": "b0bb10bdbe0d0e01ce04c8cdb2307c45f0cedb7e2c081794b6efe68d6aa4ac5c",
"size": 1550967,
"url": "https://git.m4ko.net/m4ko/pristontale-eu-linux/releases/download/v1.1.0/PristonTale-EU-1.1.0.tar.gz?sha256=b0bb10bdbe0d0e01ce04c8cdb2307c45f0cedb7e2c081794b6efe68d6aa4ac5c"
"name": "PristonTale-EU-1.1.1.tar.gz",
"sha256": "f3825038f83c1348a6eec790e94f5f244fe5ce246d39e2d32f65bb58395542e0",
"size": 1551152,
"url": "https://git.m4ko.net/m4ko/pristontale-eu-linux/releases/download/v1.1.1/PristonTale-EU-1.1.1.tar.gz?sha256=f3825038f83c1348a6eec790e94f5f244fe5ce246d39e2d32f65bb58395542e0"
},
"archive_sha256": "b0bb10bdbe0d0e01ce04c8cdb2307c45f0cedb7e2c081794b6efe68d6aa4ac5c",
"archive_size": 1550967,
"archive_url": "https://git.m4ko.net/m4ko/pristontale-eu-linux/releases/download/v1.1.0/PristonTale-EU-1.1.0.tar.gz?sha256=b0bb10bdbe0d0e01ce04c8cdb2307c45f0cedb7e2c081794b6efe68d6aa4ac5c",
"archive_sha256": "f3825038f83c1348a6eec790e94f5f244fe5ce246d39e2d32f65bb58395542e0",
"archive_size": 1551152,
"archive_url": "https://git.m4ko.net/m4ko/pristontale-eu-linux/releases/download/v1.1.1/PristonTale-EU-1.1.1.tar.gz?sha256=f3825038f83c1348a6eec790e94f5f244fe5ce246d39e2d32f65bb58395542e0",
"channel": "stable",
"commit": "be7891f06617674864b035645137441321db03b4",
"commit": "d75c345d36b5916ce58fdf5fd9dbdf4e6d006471",
"compatibility": {
"config_schema": 1,
"manifest_schema": 1,
@@ -36,7 +36,7 @@
},
{
"path": "ptlinux/__init__.py",
"sha256": "d533461854917e3343b9f600b5949421eadedb9a0a550a8adf0444b81023d333",
"sha256": "1ec358b790abcebfcba6a44510323648e9a11a6b4e1f2b6b666e288c10fe4c96",
"size": 151
},
{
@@ -91,8 +91,8 @@
},
{
"path": "ptlinux/cli.py",
"sha256": "ae8f3740fa997d7e00d26bc5fec68f582e70a051cfb00cd88c8a2eaeb547b4b0",
"size": 23871
"sha256": "e142e0f33a7f1f8f88b8ad431d1b28b24dab3f74d367ed1912e8106ba6aab229",
"size": 23816
},
{
"path": "ptlinux/command.py",
@@ -131,8 +131,8 @@
},
{
"path": "ptlinux/diagnostics/native_logs.py",
"sha256": "3c07a45e89f69b2607288d7fd98f20e0679ee35599de03a3d4e3838ef93e91ba",
"size": 18769
"sha256": "1a7044630052311e7f74ddd716b82a60383d4404493970db35f6741019510ecb",
"size": 18780
},
{
"path": "ptlinux/doctor.py",
@@ -446,8 +446,8 @@
},
{
"path": "ptlinux/settings.py",
"sha256": "8d62b262bb43eff664b9f6a58bf68a88fec0a8e05b6b9e97cbb47509079c2115",
"size": 12059
"sha256": "7fd8ecdcbc76feb9bef1f9c840e0e5f73f159c1d370d04e2f3455917a7bc3cce",
"size": 12727
},
{
"path": "ptlinux/system_identity.py",
@@ -656,8 +656,8 @@
},
{
"path": "ptlinux/ui/dialogs/settings_dialog.py",
"sha256": "20a8e461799fa2104e5a09a6e4ec2e8c027caa0688726c57c9ed45e872c1971f",
"size": 25299
"sha256": "36ffa11821ec1ee3c95774071736082828c58c1f37874f00e66441d2ba0f76fa",
"size": 25294
},
{
"path": "ptlinux/ui/viewmodels/__init__.py",
@@ -706,21 +706,21 @@
},
{
"path": "release.json",
"sha256": "5dfcea2e0eb6ee4d79dba982d79e1a4d5efe1ce0579537d2a0cfab990153636a",
"sha256": "1480e6705168b79b038871832ee1558f1e79e8bdac2fd285c558950cc1fcbae9",
"size": 218
}
],
"minimum_updater_version": "0.9.9",
"notes_url": "https://git.m4ko.net/m4ko/pristontale-eu-linux/releases/tag/v1.1.0",
"published_at": "2026-09-19T10:49:03Z",
"notes_url": "https://git.m4ko.net/m4ko/pristontale-eu-linux/releases/tag/v1.1.1",
"published_at": "2026-10-20T21:42:30Z",
"release": {
"notes_markdown": "# PristonTale EU Launcher 1.1.0\n\n- Improved GE-Proton/UMU compatibility, launch arguments, and renderer selection.\n- Isolated runtime prefixes and strengthened compatibility checks for game updates.\n- Fixed missing-Tk startup recovery and SteamOS dependency warnings.\n- Improved CDN retries, mirror failover, and interrupted download recovery.\n- Fixed Gamescope shutdown handling and optimized window resizing detection.\n- Expanded launch diagnostics and regression coverage.\n\n---\n\nVersion: `1.1.0` \nChannel: `stable` \nTag: `v1.1.0` \nSource commit: `be7891f06617674864b035645137441321db03b4`\n",
"release_notes_url": "https://git.m4ko.net/m4ko/pristontale-eu-linux/releases/tag/v1.1.0",
"summary": "Improved GE-Proton/UMU compatibility, launch arguments, and renderer selection.",
"title": "PristonTale EU Launcher 1.1.0"
"notes_markdown": "# PristonTale EU Launcher 1.1.1\n\n- Made GE-Proton with modern WoW64 the default runtime for Babel.\n- Automatically migrate existing runtime settings once, while preserving later manual choices and PTR's Proton 7 compatibility.\n- Persist settings migrations during command-line launches and updates.\n- Improved detection of collision warnings in game crash diagnostics.\n\nThe first launch may download GE-Proton and prepare its separate compatibility prefix.\n\n---\n\nVersion: `1.1.1` \nChannel: `stable` \nTag: `v1.1.1` \nSource commit: `d75c345d36b5916ce58fdf5fd9dbdf4e6d006471`\n",
"release_notes_url": "https://git.m4ko.net/m4ko/pristontale-eu-linux/releases/tag/v1.1.1",
"summary": "Made GE-Proton with modern WoW64 the default runtime for Babel.",
"title": "PristonTale EU Launcher 1.1.1"
},
"schema": 1,
"status": "active",
"tag": "v1.1.0",
"version": "1.1.0"
"tag": "v1.1.1",
"version": "1.1.1"
}

Binary file not shown.