docs: design the update manager + manifest generator #3
Reference in New Issue
Block a user
Delete Branch "jann/m2dev-client:claude/update-manager"
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?
Closes #2.
Summary
Design for the Metin2 update manager, plus a working prototype manifest generator. No launcher in this PR — that comes in the next one once the design is reviewed.
docs/update-manager.md— full architecture: single-entry launcher, content-addressed Caddy-served blobs, Ed25519-signed JSON manifest, rename-before-replace self-update, offline fallback, failure-mode table, ~10-day MVP plan.docs/update-manifest.md— formal JSON schema with canonical ordering rules so signatures stay stable.docs/examples/manifest-example.json— small synthetic example so reviewers can see the shape without wading through a real 54k-file manifest.scripts/make-manifest.py— sha256-hashes a client directory, emits canonical JSON. Excludes runtime artifacts (.log,.dxvk-cache,.pdb,.old, etc.). Launcher is broken out as a top-level field, not a file entry.Verification so far
make-manifest.pyagainst our wine-client folder: 54443 files, 3.3 GiB hashed end-to-end in a single pass.update-manifest.md(2-space indent, LF endings, sorted files array, stable key order)..logand.dxvk-cachenoise after first run.Review focus
update-manager.md?Notes
This is doc-heavy on purpose. The launcher code is the next PR and I want alignment on the design before writing it, so we don't throw away C# that doesn't fit the flow.