update manager — design #2
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Assignment
Design an update manager for the Metin2 client.
Decisions baked into the design
Metin2Launcher.exe, it owns update + launch.make-release.shin v1, move to Gitea Actions in v2 once the flow is proven.Proposed architecture
updates.jakubkadlec.dev/, served by the existing Caddy on the VPS. Content-addressed blobs atfiles/<hash[0:2]>/<hash>, current manifest atmanifest.json, detached Ed25519 signature atmanifest.json.sig.YYYY.MM.DD-N, launcher called out separately.MoveFileEx, self-updates via rename-before-replace, launchesMetin2.exe. Offline fallback: if server is unreachable, launch the game with whatever is local.Deliverables in the PR
See PR #2 (to be linked) for:
docs/update-manager.md— full design (21 KB)docs/update-manifest.md— manifest schema + canonical JSON rulesdocs/examples/manifest-example.json— small synthetic examplescripts/make-manifest.py— working manifest generator, excludes runtime noise, tested against our current client folder (54k files, ~3.3 GB)The design doc has a full implementation plan table (~10 working days to MVP) and a failure-modes table.
Not in this PR
claude/update-launcher)make-release.sh(follows the launcher)updates.jakubkadlec.dev(operator task, separate issue)Open questions I left for the team
locale.pck)Happy to adjust any of this before implementing the launcher. Review welcome.