New version 0.5.2, fixes some issues with login.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# PristonTale EU for Linux
|
||||
|
||||
Version 0.5.1 installs, updates, repairs, and launches PristonTale EU through a
|
||||
Version 0.5.2 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.
|
||||
|
||||
@@ -9,9 +9,9 @@ included in this archive.
|
||||
Keep the archive and checksum file together, then run:
|
||||
|
||||
```text
|
||||
sha256sum -c pristontale-eu-linux-installer-v0-5-1.tar.gz.sha256
|
||||
tar -xzf pristontale-eu-linux-installer-v0-5-1.tar.gz
|
||||
cd pristontale-eu-linux-installer-v0-5-1
|
||||
sha256sum -c pristontale-eu-linux-installer-v0-5-2.tar.gz.sha256
|
||||
tar -xzf pristontale-eu-linux-installer-v0-5-2.tar.gz
|
||||
cd pristontale-eu-linux-installer-v0-5-2
|
||||
./install.sh
|
||||
```
|
||||
|
||||
@@ -48,6 +48,7 @@ for rollback.
|
||||
pristontale-eu --help Show all commands and options
|
||||
pristontale-eu gui Open the native dashboard
|
||||
pristontale-eu doctor Check required host components
|
||||
pristontale-eu login-diagnostics Check the login route without credentials
|
||||
pristontale-eu update Install or update official files
|
||||
pristontale-eu update --repair Verify and repair every game file
|
||||
pristontale-eu update --dry-run Preview an update
|
||||
|
||||
1
dist/pristontale-eu-linux-installer-v0-5-2.tar.gz.sha256
vendored
Normal file
1
dist/pristontale-eu-linux-installer-v0-5-2.tar.gz.sha256
vendored
Normal file
@@ -0,0 +1 @@
|
||||
cd0314c9fba1779dac5bbe24190c174941dbed89c371b68808fefa37de7750bf pristontale-eu-linux-installer-v0-5-2.tar.gz
|
||||
BIN
dist/pristontale-eu-linux-installer-v0-5-2.zip
vendored
Normal file
BIN
dist/pristontale-eu-linux-installer-v0-5-2.zip
vendored
Normal file
Binary file not shown.
BIN
dist/pristontale-eu-linux-update-v0.5.2.tar.gz
vendored
Normal file
BIN
dist/pristontale-eu-linux-update-v0.5.2.tar.gz
vendored
Normal file
Binary file not shown.
1
dist/pristontale-eu-linux-update-v0.5.2.tar.gz.sha256
vendored
Normal file
1
dist/pristontale-eu-linux-update-v0.5.2.tar.gz.sha256
vendored
Normal file
@@ -0,0 +1 @@
|
||||
e391accd5448f3239aeda2561e5faf2eb17b5aa5c61837da609f456815398002 pristontale-eu-linux-update-v0.5.2.tar.gz
|
||||
11
dist/stable.json
vendored
Normal file
11
dist/stable.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"archive_sha256": "e391accd5448f3239aeda2561e5faf2eb17b5aa5c61837da609f456815398002",
|
||||
"archive_size": 71737,
|
||||
"archive_url": "https://git.m4ko.net/m4ko/pristontale-eu-linux/releases/download/v0.5.2/pristontale-eu-linux-update-v0.5.2.tar.gz",
|
||||
"channel": "stable",
|
||||
"minimum_updater_version": "0.5.0",
|
||||
"notes_url": "https://git.m4ko.net/m4ko/pristontale-eu-linux/releases/tag/v0.5.2",
|
||||
"published_at": "2026-08-27T19:01:33Z",
|
||||
"schema": 1,
|
||||
"version": "0.5.2"
|
||||
}
|
||||
BIN
dist/stable.json.sig
vendored
Normal file
BIN
dist/stable.json.sig
vendored
Normal file
Binary file not shown.
@@ -3,7 +3,7 @@
|
||||
set -euo pipefail
|
||||
|
||||
SOURCE_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
||||
VERSION="${PTLINUX_VERSION:-0.5.1}"
|
||||
VERSION="${PTLINUX_VERSION:-0.5.2}"
|
||||
if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]
|
||||
then
|
||||
printf 'Invalid launcher version: %s (expected X.Y.Z)\n' "$VERSION" >&2
|
||||
|
||||
@@ -4,4 +4,4 @@ from .paths import AppPaths
|
||||
|
||||
__all__ = ["AppPaths", "__version__"]
|
||||
|
||||
__version__ = "0.5.1"
|
||||
__version__ = "0.5.2"
|
||||
|
||||
@@ -25,6 +25,7 @@ from .launcher import (
|
||||
prepare_launcher_binary,
|
||||
)
|
||||
from .locking import launcher_operation_lock
|
||||
from .login_diagnostics import inspect_login_environment
|
||||
from .overlay import cache_compatibility_binaries, cache_runtime_patch, prepare_runtime_view
|
||||
from .paths import AppPaths
|
||||
from .runtime import (
|
||||
@@ -56,6 +57,16 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
|
||||
subparsers.add_parser("gui", help="open the native Linux dashboard")
|
||||
subparsers.add_parser("doctor", help="check cross-distribution dependencies")
|
||||
login_diagnostics = subparsers.add_parser(
|
||||
"login-diagnostics",
|
||||
help="check the client, runtime, and publisher login route without credentials",
|
||||
)
|
||||
login_diagnostics.add_argument(
|
||||
"--timeout",
|
||||
type=float,
|
||||
default=5.0,
|
||||
help="TCP connection timeout in seconds (default: 5)",
|
||||
)
|
||||
|
||||
fetch = subparsers.add_parser("fetch", help="fetch and safely prepare the latest official launcher")
|
||||
fetch.add_argument("--dry-run", action="store_true")
|
||||
@@ -169,6 +180,8 @@ def main(argv: Sequence[str] | None = None) -> int:
|
||||
return 0
|
||||
if command == "doctor":
|
||||
return _doctor(arguments.json)
|
||||
if command == "login-diagnostics":
|
||||
return _login_diagnostics(paths, arguments.timeout, arguments.json)
|
||||
if command == "fetch":
|
||||
return _fetch(paths, arguments.dry_run, arguments.json)
|
||||
if command == "setup":
|
||||
@@ -274,6 +287,48 @@ def _doctor(as_json: bool) -> int:
|
||||
return 0 if report.ok else 1
|
||||
|
||||
|
||||
def _login_diagnostics(paths: AppPaths, timeout_seconds: float, as_json: bool) -> int:
|
||||
settings = _load_or_default_settings(paths, persist=False)
|
||||
report = inspect_login_environment(
|
||||
paths,
|
||||
settings,
|
||||
timeout_seconds=timeout_seconds,
|
||||
)
|
||||
if as_json:
|
||||
_print_json(report.to_dict())
|
||||
else:
|
||||
probe = report.login_server
|
||||
print(f"Launcher: {report.launcher_version} ({report.launcher_module})")
|
||||
print(f"Python: {report.python_executable}")
|
||||
status = "REACHABLE" if probe.reachable else "UNREACHABLE"
|
||||
latency = f", {probe.latency_ms:.1f} ms" if probe.latency_ms is not None else ""
|
||||
print(f"Login server: {status} ({probe.host}:{probe.port}{latency})")
|
||||
if probe.error:
|
||||
print(f"Network error: {probe.error}")
|
||||
print("Authentication: not tested; no credentials or game-protocol data were sent")
|
||||
print(f"Game profile: {report.game_profile}")
|
||||
print(f"Game.exe: {report.game_exe}")
|
||||
if report.game_exe_sha256:
|
||||
print(f"Game SHA-256: {report.game_exe_sha256}")
|
||||
print(f"game.dll: {report.game_dll}")
|
||||
if report.game_dll_sha256:
|
||||
print(f"DLL SHA-256: {report.game_dll_sha256}")
|
||||
if report.runtime_kind:
|
||||
print(f"Runtime: {report.runtime_kind} ({report.runtime_path or 'unknown path'})")
|
||||
else:
|
||||
print(f"Runtime: unavailable ({report.runtime_error or 'selection failed'})")
|
||||
prefix_status = "ready" if report.prefix_ready else "not ready"
|
||||
directx_status = "ready" if report.directx_ready else "not ready"
|
||||
print(f"Prefix: {prefix_status}; DirectX helpers {directx_status}")
|
||||
print(f"Prefix path: {report.prefix or 'unavailable'}")
|
||||
print(f"Latest log: {report.latest_game_log or 'not found'}")
|
||||
if report.latest_game_log_modified_at:
|
||||
print(f"Log modified: {report.latest_game_log_modified_at}")
|
||||
for warning in report.warnings:
|
||||
print(f"Warning: {warning}")
|
||||
return 0 if report.preflight_ok else 1
|
||||
|
||||
|
||||
def _fetch(paths: AppPaths, dry_run: bool, as_json: bool) -> int:
|
||||
if not dry_run:
|
||||
paths.create_base_directories()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "ptdiag"
|
||||
version = "0.5.1"
|
||||
version = "0.5.2"
|
||||
description = "PristonTale EU Linux installer, clean launcher, and diagnostic harness"
|
||||
requires-python = ">=3.11"
|
||||
dependencies = []
|
||||
|
||||
Reference in New Issue
Block a user