This commit is contained in:
2026-08-31 22:20:17 +02:00
parent eefada36e9
commit eeac39e7b1
40 changed files with 3203 additions and 449 deletions
+38 -21
View File
@@ -1,25 +1,42 @@
# Citizen Launcher 0.9.2
# Citizen Launcher 1.0.0
Maintenance/UX hotfix for the distro-neutral preview.
First productized distro-neutral release.
- Removed mandatory PowerShell Core from base Winetricks setup.
- Robust RSI Electron Builder `latest.yml` parsing (`path`, nested `url`, version fallback).
- DXVK is included in automatic repair.
- Responsive GUI with safer grid sizing and readable diagnostics.
- Added regression tests for RSI metadata formats and the minimal prefix contract.
## Setup and gameplay
## 0.9.2
- Replaces the old LUG-controlled installation path with one Citizen Launcher core.
- Chooses the newest stable LUG Wine release that actually passes a fresh-prefix self-test on the local CPU/glibc environment; incompatible releases are cached and skipped.
- Preserves a previous working Wine runner and never activates an untested candidate.
- Uses a deterministic SHA-256-pinned Winetricks 20260125 base (`arial`, `tahoma`, `win11` only).
- Avoids the unreliable Winetricks PowerShell MSI path. RSI PowerShell compatibility is provided by verified portable PowerShell Core 7.4.19 and the RSI-compatible Wine wrapper 3.0.5.
- Manages DXVK itself, including DLL verification and Wine native overrides.
- Parses current Electron Builder RSI `latest.yml` layouts and verifies the RSI installer SHA-512 before execution.
- Repairs prefix components, RSI compatibility, DXVK, RSI Launcher and desktop integration without deleting game data.
- fixes `Wine Registry: reg: Angegebener Schlüssel nicht zugreifbar oder erstellbar`
- registry path now uses valid single separators
- file-association tweak is non-fatal because it is not required by Star Citizen
- adds automatic application updates
- Debian package installs a root systemd updater timer
- updater checks GitHub Releases every six hours
- downloads only the expected `citizen-launcher_<version>_amd64.deb`
- requires and verifies GitHub's SHA-256 asset digest
- verifies package name/version/architecture before APT installation
- generic user installs self-update from the verified tarball
- GUI shows whether automatic package updates are active
- a running old GUI detects when a newer package was installed and offers a one-click restart
- adds a GitHub Actions release workflow and central `VERSION` file
## Reliability hardening
- Fixes the historical literal `\\n` Star Citizen desktop-entry regression and automatically repairs old affected launchers.
- Fixes Wine registry path escaping; the file-association tweak is non-fatal.
- Fixes executable permissions when self-sync copies over an existing temporary file.
- Single GUI instance via file lock; a second launch reuses the existing localhost UI.
- One active GUI job at a time plus a cross-process gaming-stack lock.
- Detects a running RSI Launcher or Star Citizen and does not launch duplicates or kill an active game.
- Exact `/proc` `WINEPREFIX` matching avoids false busy/running detections for similarly named prefixes.
- Wine and DXVK release archives use safe extraction with traversal/link checks.
- Downloads are staged and atomically activated; logs rotate and maintenance is deferred while the prefix is busy.
## System and UX
- Responsive standalone GUI with concise errors and expandable technical diagnostics.
- Preflight for Vulkan, AVX, RAM+swap, free storage, Linux filesystem, `vm.max_map_count` and open-file limits.
- Debian package installs the recommended system limits and uses Polkit for interactive preparation when needed.
- User-local 0.9.x binaries/desktop entries that shadow a newer Debian package are migrated safely.
- Generic uninstall removes launcher integration but preserves game/config data.
## Updates and maintenance
- Debian package installs a systemd timer that checks for a new Citizen Launcher release about every six hours.
- Automatic package update requires the expected GitHub release asset, a SHA-256 digest, matching `citizen-launcher` package name/version and `amd64` architecture before APT is invoked.
- Root updater ignores user-controlled release-repository environment variables and rejects writable/non-root repository configuration.
- Running GUIs are not killed during package replacement; they offer a controlled restart into the installed version.
- CI/release gate runs unit tests, vet, race detector, static build, integration test and package verification.