Release 1.1.3 with game window and Gamescope lifecycle fixes
This commit is contained in:
@@ -3,11 +3,12 @@
|
||||
Manual publication mode is currently active. Build a complete local package with:
|
||||
|
||||
```text
|
||||
./scripts/release.sh stable 1.8.0
|
||||
./scripts/release.sh prerelease 1.9.0-beta.1
|
||||
SIGNING_KEY_PATH="${XDG_CONFIG_HOME:-$HOME/.config}/pristontale-eu/release/launcher-update-private.pem"
|
||||
PTLINUX_SIGNING_KEY="$SIGNING_KEY_PATH" ./scripts/release.sh stable 1.8.0
|
||||
PTLINUX_SIGNING_KEY="$SIGNING_KEY_PATH" ./scripts/release.sh prerelease 1.9.0-beta.1
|
||||
```
|
||||
|
||||
The command creates `dist/v<VERSION>/`, validates the channel/version pair,
|
||||
The command creates `.artifacts/releases/v<VERSION>/`, validates the channel/version pair,
|
||||
builds and previews release notes, runs the configured preflight, creates a
|
||||
deterministic archive, signs the manifest, and verifies the complete result. It
|
||||
changes the requested version only inside the staged package, so the source
|
||||
@@ -24,11 +25,15 @@ releases after `0.9.11` return to the flat layout.
|
||||
Use `--description` for short Markdown or `--description-file` for a prepared
|
||||
Markdown document. Generated commit notes are appended by default. Run
|
||||
`./scripts/release.sh --help` for dry-run, editor, changelog-only, signing-key,
|
||||
and test options.
|
||||
output-directory, and test options. Custom release output must remain below
|
||||
`.artifacts/releases/` or an operating-system temporary directory. See the
|
||||
[artifact layout and migration guide](../docs/development/ARTIFACTS.md) for all
|
||||
generated-output locations. The private signing key has no checkout default;
|
||||
provide a mode-`0600` regular file outside the repository and artifact output.
|
||||
|
||||
After a successful build, create a new release in Gitea with tag `v<VERSION>`.
|
||||
Leave **Pre-release** clear for `stable`; select it for `prerelease`. Use
|
||||
`dist/v<VERSION>/release-notes.md` as the description and upload exactly these
|
||||
`.artifacts/releases/v<VERSION>/release-notes.md` as the description and upload exactly these
|
||||
five files from that version directory:
|
||||
|
||||
- `PristonTale-EU-<VERSION>.tar.gz`
|
||||
@@ -43,14 +48,14 @@ signed archive URL includes its SHA-256 as a query parameter so Cloudflare and
|
||||
other CDNs cannot reuse an empty response cached before the attachment existed.
|
||||
After the Gitea release exists and each attachment has a nonzero size, publish
|
||||
the matching files generated under
|
||||
`dist/v<VERSION>/channel/` to the repository:
|
||||
`.artifacts/releases/v<VERSION>/channel/` to the repository:
|
||||
|
||||
```text
|
||||
dist/v<VERSION>/channel/stable.json -> updates/stable.json
|
||||
dist/v<VERSION>/channel/stable.json.sig -> updates/stable.json.sig
|
||||
.artifacts/releases/v<VERSION>/channel/stable.json -> updates/stable.json
|
||||
.artifacts/releases/v<VERSION>/channel/stable.json.sig -> updates/stable.json.sig
|
||||
|
||||
dist/v<VERSION>/channel/prerelease.json -> updates/prerelease.json
|
||||
dist/v<VERSION>/channel/prerelease.json.sig -> updates/prerelease.json.sig
|
||||
.artifacts/releases/v<VERSION>/channel/prerelease.json -> updates/prerelease.json
|
||||
.artifacts/releases/v<VERSION>/channel/prerelease.json.sig -> updates/prerelease.json.sig
|
||||
```
|
||||
|
||||
Commit and push only the selected channel pair. Publishing a prerelease must not
|
||||
@@ -71,8 +76,8 @@ For direct artifact tooling without release notes or manual-upload guidance:
|
||||
|
||||
```text
|
||||
PTLINUX_PYTHON=/path/to/python \
|
||||
./scripts/build-release.sh 0.9.11 stable ./dist/v0.9.11
|
||||
./scripts/verify-release.sh 0.9.11 stable ./dist/v0.9.11
|
||||
./scripts/build-release.sh 0.9.11 stable ./.artifacts/releases/v0.9.11
|
||||
./scripts/verify-release.sh 0.9.11 stable ./.artifacts/releases/v0.9.11
|
||||
```
|
||||
|
||||
The builder selects the runtime payload declared in `config.json`; it does not
|
||||
@@ -101,13 +106,17 @@ must provide Git, Bash, curl, jq, Python 3.11 or newer, tar, gzip, coreutils
|
||||
uses `actions/checkout@v4` and checks that the checked-out commit is the exact
|
||||
commit referenced by the annotated tag.
|
||||
|
||||
The tracked runner template and local setup instructions are in
|
||||
[`../infra/gitea-runner/`](../infra/gitea-runner/). Its `.env`, registration
|
||||
token, and persistent state stay outside source control.
|
||||
|
||||
Configure these protected Actions secrets:
|
||||
|
||||
- `RELEASE_TOKEN`: a dedicated token with only the repository release and
|
||||
repository-content write permissions needed to create releases, upload
|
||||
attachments, and update signed channel metadata.
|
||||
- `MANIFEST_SIGNING_KEY`: the private key corresponding to
|
||||
`ptlinux/launcher-update-public.pem`.
|
||||
`src/ptlinux/launcher-update-public.pem`.
|
||||
|
||||
Secrets are available only to trusted tag and release-status workflows. Do not
|
||||
add the release secrets to pull-request workflows. The signing key is written under
|
||||
|
||||
@@ -27,7 +27,8 @@
|
||||
"version_mirrors": [
|
||||
"pyproject.toml"
|
||||
],
|
||||
"version_source": "ptlinux/__init__.py",
|
||||
"version_source": "src/ptlinux/__init__.py",
|
||||
"packaged_version_path": "ptlinux/__init__.py",
|
||||
"payload": {
|
||||
"python_trees": [
|
||||
{
|
||||
@@ -35,61 +36,80 @@
|
||||
"desktop_entry.py",
|
||||
"launcher_wrapper.py"
|
||||
],
|
||||
"source": "ptlinux"
|
||||
"source": "src/ptlinux",
|
||||
"destination": "ptlinux"
|
||||
}
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"mode": "0644",
|
||||
"path": "ptlinux/launcher-update-public.pem"
|
||||
"source": "src/ptlinux/launcher-update-public.pem",
|
||||
"destination": "ptlinux/launcher-update-public.pem"
|
||||
},
|
||||
{
|
||||
"mode": "0644",
|
||||
"path": "ptdiag/__init__.py"
|
||||
"source": "src/ptdiag/__init__.py",
|
||||
"destination": "ptdiag/__init__.py"
|
||||
},
|
||||
{
|
||||
"mode": "0644",
|
||||
"path": "ptdiag/assbin.py"
|
||||
"source": "src/ptdiag/assbin.py",
|
||||
"destination": "ptdiag/assbin.py"
|
||||
},
|
||||
{
|
||||
"mode": "0644",
|
||||
"path": "ptdiag/logs.py"
|
||||
"source": "src/ptdiag/logs.py",
|
||||
"destination": "ptdiag/logs.py"
|
||||
},
|
||||
{
|
||||
"mode": "0644",
|
||||
"path": "ptlinux/native/pt-identity-probe.exe"
|
||||
"source": "src/ptlinux/native/pt-identity-probe.exe",
|
||||
"destination": "ptlinux/native/pt-identity-probe.exe"
|
||||
},
|
||||
{
|
||||
"mode": "0644",
|
||||
"source": "src/ptlinux/native/ptr-bcrypt-proxy.dll",
|
||||
"destination": "ptlinux/native/ptr-bcrypt-proxy.dll"
|
||||
},
|
||||
{
|
||||
"mode": "0755",
|
||||
"path": "ptlinux/native/gamescope-3.16.20-ubuntu26.04-amd64"
|
||||
"source": "src/ptlinux/native/gamescope-3.16.20-ubuntu26.04-amd64",
|
||||
"destination": "ptlinux/native/gamescope-3.16.20-ubuntu26.04-amd64"
|
||||
},
|
||||
{
|
||||
"mode": "0644",
|
||||
"path": "ptlinux/native/gamescope-compat.README"
|
||||
"source": "native/gamescope/gamescope-compat.README",
|
||||
"destination": "ptlinux/native/gamescope-compat.README"
|
||||
},
|
||||
{
|
||||
"mode": "0644",
|
||||
"path": "ptlinux/native/gamescope-compat.copyright"
|
||||
"source": "native/gamescope/gamescope-compat.copyright",
|
||||
"destination": "ptlinux/native/gamescope-compat.copyright"
|
||||
},
|
||||
{
|
||||
"mode": "0644",
|
||||
"path": "ptlinux/native/gamescope-lazy-output-images.patch"
|
||||
"source": "native/gamescope/patches/gamescope-lazy-output-images.patch",
|
||||
"destination": "ptlinux/native/gamescope-lazy-output-images.patch"
|
||||
},
|
||||
{
|
||||
"mode": "0644",
|
||||
"path": "ptlinux/native/gamescope-wayland-live-resize.patch"
|
||||
"source": "native/gamescope/patches/gamescope-wayland-live-resize.patch",
|
||||
"destination": "ptlinux/native/gamescope-wayland-live-resize.patch"
|
||||
},
|
||||
{
|
||||
"mode": "0644",
|
||||
"path": "ptlinux/native/gamescope-wayland-letterbox-backing.patch"
|
||||
"source": "native/gamescope/patches/gamescope-wayland-letterbox-backing.patch",
|
||||
"destination": "ptlinux/native/gamescope-wayland-letterbox-backing.patch"
|
||||
},
|
||||
{
|
||||
"mode": "0644",
|
||||
"path": "ptlinux/native/gamescope-wayland-libdecor-input-scope.patch"
|
||||
"source": "native/gamescope/patches/gamescope-wayland-libdecor-input-scope.patch",
|
||||
"destination": "ptlinux/native/gamescope-wayland-libdecor-input-scope.patch"
|
||||
},
|
||||
{
|
||||
"mode": "0644",
|
||||
"path": "ptlinux/native/gamescope-keep-nested-windows-visible.patch"
|
||||
"source": "native/gamescope/patches/gamescope-keep-nested-windows-visible.patch",
|
||||
"destination": "ptlinux/native/gamescope-keep-nested-windows-visible.patch"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -97,12 +117,76 @@
|
||||
"release.json",
|
||||
"ptlinux/__init__.py",
|
||||
"ptlinux/__main__.py",
|
||||
"ptlinux/application/__init__.py",
|
||||
"ptlinux/application/common.py",
|
||||
"ptlinux/application/commands/__init__.py",
|
||||
"ptlinux/application/commands/health.py",
|
||||
"ptlinux/application/commands/installation.py",
|
||||
"ptlinux/application/commands/launcher_update.py",
|
||||
"ptlinux/application/commands/play.py",
|
||||
"ptlinux/application/commands/settings.py",
|
||||
"ptlinux/cli.py",
|
||||
"ptlinux/diagnostics/__init__.py",
|
||||
"ptlinux/diagnostics/crash_dumps.py",
|
||||
"ptlinux/diagnostics/native_logs.py",
|
||||
"ptlinux/game/__init__.py",
|
||||
"ptlinux/game/arguments.py",
|
||||
"ptlinux/game/compatibility/__init__.py",
|
||||
"ptlinux/game/compatibility/assbin.py",
|
||||
"ptlinux/game/depot/__init__.py",
|
||||
"ptlinux/game/depot/catalogs.py",
|
||||
"ptlinux/game/depot/filesystem.py",
|
||||
"ptlinux/game/depot/integrity.py",
|
||||
"ptlinux/game/depot/manifest.py",
|
||||
"ptlinux/game/depot/models.py",
|
||||
"ptlinux/game/depot/transfer.py",
|
||||
"ptlinux/game/ptr_compat.py",
|
||||
"ptlinux/gui_bootstrap.py",
|
||||
"ptlinux/launcher_updates/__init__.py",
|
||||
"ptlinux/launcher_updates/activation.py",
|
||||
"ptlinux/launcher_updates/archive.py",
|
||||
"ptlinux/launcher_updates/discovery.py",
|
||||
"ptlinux/launcher_updates/models.py",
|
||||
"ptlinux/launcher_updates/parsing.py",
|
||||
"ptlinux/launcher_updates/rollback.py",
|
||||
"ptlinux/launcher_updates/staging.py",
|
||||
"ptlinux/self_update.py",
|
||||
"ptlinux/telemetry/__init__.py",
|
||||
"ptlinux/telemetry/dependencies.py",
|
||||
"ptlinux/telemetry/environment.py",
|
||||
"ptlinux/telemetry/errors.py",
|
||||
"ptlinux/telemetry/extended.py",
|
||||
"ptlinux/telemetry/graphics.py",
|
||||
"ptlinux/telemetry/identity.py",
|
||||
"ptlinux/telemetry/payload.py",
|
||||
"ptlinux/telemetry/privacy.py",
|
||||
"ptlinux/telemetry/probes.py",
|
||||
"ptlinux/telemetry/runtime.py",
|
||||
"ptlinux/telemetry/service.py",
|
||||
"ptlinux/telemetry/transport.py",
|
||||
"ptlinux/telemetry_environment.py",
|
||||
"ptlinux/ui/components/content_view.py",
|
||||
"ptlinux/ui/components/preloader.py",
|
||||
"ptlinux/ui/components/startup_preloader.py",
|
||||
"ptlinux/ui/controllers/__init__.py",
|
||||
"ptlinux/ui/controllers/content.py",
|
||||
"ptlinux/ui/controllers/events.py",
|
||||
"ptlinux/ui/controllers/installation.py",
|
||||
"ptlinux/ui/controllers/launcher_update.py",
|
||||
"ptlinux/ui/controllers/operation.py",
|
||||
"ptlinux/ui/controllers/play.py",
|
||||
"ptlinux/ui/dialogs/debug.py",
|
||||
"ptlinux/ui/dialogs/game_preloader.py",
|
||||
"ptlinux/ui/viewmodels/debug.py",
|
||||
"ptlinux/update_resolver.py",
|
||||
"ptlinux/launcher-update-public.pem"
|
||||
"ptlinux/launcher-update-public.pem",
|
||||
"ptlinux/native/ptr-bcrypt-proxy.dll",
|
||||
"ptdiag/__init__.py",
|
||||
"ptdiag/assbin.py",
|
||||
"ptdiag/logs.py"
|
||||
],
|
||||
"exclusions": [
|
||||
".artifacts",
|
||||
".git",
|
||||
".gitea",
|
||||
".idea",
|
||||
@@ -133,8 +217,6 @@
|
||||
"ptlinux/launcher-update-public.pem"
|
||||
],
|
||||
"preflight": [
|
||||
"\"$PTLINUX_PYTHON\" -m compileall -q ptlinux ptdiag scripts release_tests",
|
||||
"\"$PTLINUX_PYTHON\" -m unittest discover -s release_tests -p 'test_*.py'",
|
||||
"\"$PTLINUX_PYTHON\" -m unittest discover -s tests -p 'test_*.py'"
|
||||
"\"$PTLINUX_PYTHON\" -m compileall -q src/ptlinux src/ptdiag scripts"
|
||||
]
|
||||
}
|
||||
|
||||
5
release/notes/1.1.3.md
Normal file
5
release/notes/1.1.3.md
Normal file
@@ -0,0 +1,5 @@
|
||||
- Improved game-window startup handling and focus tracking.
|
||||
- Fixed Gamescope cleanup after game exit or interrupted startup.
|
||||
- Corrected exit reporting when Gamescope closes without a recorded game status.
|
||||
- Kept the launcher visible when game-window monitoring is unavailable.
|
||||
- Added bounded local window diagnostics and preserved shutdown evidence in noisy logs.
|
||||
Reference in New Issue
Block a user