Commit Graph

233 Commits

Author SHA1 Message Date
Jan Nedbal
b5d046c91a docs: link make-release.sh from update-manager doc 2026-04-14 13:52:27 +02:00
Jan Nedbal
c2804fe1a6 scripts: add make-release.sh 2026-04-14 13:52:23 +02:00
1dba3e3c91 Merge pull request 'docs: design the update manager + manifest generator' (#3) from jann/m2dev-client:claude/update-manager into main
Reviewed-on: metin-server/m2dev-client#3
2026-04-14 11:54:39 +02:00
Jan Nedbal
fdb9e98075 docs: add caddy updates vhost bring-up runbook
Step-by-step operator runbook for turning on updates.jakubkadlec.dev:
create the webroot, append the site block, validate the Caddyfile
before reload, watch for Let's Encrypt cert issuance, verify from an
external client, plus explicit rollback for every mutating step and a
catastrophic-recovery section in case Caddy drops all sites. Targeted
at Jakub (VPS operator) so Claude does not touch the running service.
2026-04-14 11:35:39 +02:00
Jan Nedbal
02061f6e07 docs: add caddy snippet for updates.jakubkadlec.dev
Caddy site block for the update CDN. Serves the signed manifest with
short TTL, content-addressed blobs as immutable, historical manifests
as immutable, and the Velopack launcher feed alongside. Caching rules
are calibrated so a new release is visible within a minute without
hammering the origin on thundering herds.
2026-04-14 11:22:32 +02:00
Jan Nedbal
b7e4514677 scripts: add manifest signer
Companion to make-manifest.py that signs the output with an Ed25519
private key. Signs the literal manifest bytes — never re-serializes —
because the launcher verifies against exactly what the server delivers.
Warns if the private key file is readable beyond owner. Verified
end-to-end against the launcher's real public key and a tamper test.
2026-04-14 11:22:32 +02:00
Jan Nedbal
759b31d390 docs: record prior art survey and switch to velopack for self-update
After a survey of existing Metin2 launchers, general-purpose
auto-updaters, and adjacent open-source game launchers, update the
design to:

- drop the hand-rolled rename-before-replace self-update path
- use Velopack for launcher self-update (MIT, modern successor to
  Squirrel.Windows, handles atomic replace, delta, Authenticode, AV
  friendliness out of the box)
- keep the custom asset patcher for the 4 GB game payload, which
  Velopack is not designed for
- reference runelite/launcher as the architectural template
- name Sparkle 2 and wowemulation-dev/wow-patcher as Ed25519 prior art

No Metin2 community launcher is worth forking; the ceiling of
published prior art is 'file list + sha256 + HTTP GET' and this design
is already above it. Greenfield confirmed.
2026-04-14 10:44:44 +02:00
Jan Nedbal
605f8765d5 scripts: add make-manifest.py manifest generator
Walks a client directory, sha256-hashes every file, emits a canonical
JSON manifest matching docs/update-manifest.md. Excludes runtime
artifacts (.log, .dxvk-cache, .pdb, .old) and the launcher is broken
out as a top-level field rather than an entry in files[]. Does not
sign; pair with a separate signer step.
2026-04-14 10:36:24 +02:00
Jan Nedbal
6f70ef201a docs: add update manifest schema
Formal JSON schema for the release manifest, with canonical ordering
rules so signatures stay stable. Includes a small synthetic example
under docs/examples/.
2026-04-14 10:36:24 +02:00
Jan Nedbal
05af7e55b3 docs: add update manager design
Design for a content-addressed, signed manifest-based update system for
the Metin2 client. Launcher is a single entry point; server is static
files behind Caddy at updates.jakubkadlec.dev; manifests are signed with
Ed25519. Publishing starts manual in v1 and moves to Gitea Actions in v2.
2026-04-14 10:36:23 +02:00
9c95590099 Merge pull request 'docs: add Linux Wine runtime guide and setup script' (#1) from jann/m2dev-client:claude/linux-wine-runtime into main
Reviewed-on: metin-server/m2dev-client#1
2026-04-14 10:30:03 +02:00
Jan Nedbal
dd0643137f scripts: add wine prefix setup script
Idempotent helper that copies the client to a writable location,
creates a fresh Wine prefix, and installs the required winetricks verbs
(vcrun2022, d3dx9, corefonts, tahoma). Re-running on an existing target
skips already-done steps.
2026-04-14 10:23:04 +02:00
Jan Nedbal
0aa8361f09 docs: add Linux Wine runtime guide
Document the interim path for running the Windows client on Linux via
Wine, verified to reach character selection on Fedora 41 with Wine 10
Staging. Main gotcha: winetricks tahoma is mandatory because the client
hard-codes Tahoma as the UI font, and without it all text renders
invisibly even though layouts are correct.
2026-04-14 10:23:04 +02:00
server
6bbb4e9b34 docs: add repo instructions 2026-04-14 09:09:37 +02:00
server
3244c122e2 client: point server list at Debian VPS 2026-04-14 00:09:29 +02:00
d1str4ught
ecef2dcdb8 Merge pull request #81 from SunTrustDev/bugfix/dragonsoul-refinement
Fix dragonsoul refinement tooltip
2026-03-09 01:35:00 +01:00
d1str4ught
0e224dc12a Merge pull request #79 from ErLullo/metin-smoke-fix
FIX: Metin stone black-squared effect
2026-03-09 01:34:20 +01:00
SuntrustDev
e87099daae Fix dragonsoul refinement tooltip 2026-03-08 19:06:36 +01:00
ErLullo
19bae37c16 Use a real transparent dds as official. 2026-03-01 07:47:35 +01:00
rtw1x1
06c11496ec Merge pull request #76 from MindRapist/mr-17-1
Minor fixes
2026-02-19 19:28:41 +00:00
rtw1x1
61707c9cb7 Merge pull request #77 from rtw1x1/main
fix: tipBoard and bigBoard
2026-02-19 19:28:30 +00:00
rtw1x1
f48c30c81d fix: tipBoard and bigBoard 2026-02-19 19:28:07 +00:00
Mind Rapist
158dff5764 Minor fixes 2026-02-19 21:23:26 +02:00
rtw1x1
88bc6bfe79 Merge pull request #75 from rtw1x1/main
ML: HotReload UI fixes
2026-02-19 18:57:23 +00:00
rtw1x1
f6e3a61211 ML: HotReload UI fixes 2026-02-19 18:56:59 +00:00
rtw1x1
6e904e4a8e Merge pull request #71 from MindRapist/mr-16
Enable tooltip and countdown for all affects
2026-02-18 20:07:38 +00:00
rtw1x1
b71e25fe9a Merge pull request #72 from rtw1x1/main
ML: Fixed HotReload and RTL/LTR integration for UI Arabic
2026-02-18 20:02:01 +00:00
rtw1x1
c9052deb4d ML: Fixed HotReload and RTL/LTR integration for UI Arabic 2026-02-18 20:00:05 +00:00
Mind Rapist
f97568819c Enable tooltip and countdown for all affects 2026-02-18 18:48:29 +02:00
rtw1x1
5e5e49f048 Merge pull request #70 from MindRapist/mr-15 2026-02-18 15:53:08 +00:00
rtw1x1
c139132ea5 Merge pull request #69 from SunTrustDev/bugfix/text-fields-improvements 2026-02-18 15:52:54 +00:00
rtw1x1
cae927cfeb Merge pull request #68 from Alaric27C/main 2026-02-18 15:52:42 +00:00
rtw1x1
797b5946ea Merge pull request #67 from onurcan488/main 2026-02-18 15:52:31 +00:00
Mind Rapist
2a0b007169 Dialog padding adjustments (cosmetic) 2026-02-18 13:05:58 +02:00
Mind Rapist
7ccb8dbacd Encoding fixes 2026-02-18 01:59:39 +02:00
Mind Rapist
93483a240d Various fixes and improvements 2026-02-18 00:59:49 +02:00
SuntrustDev
c386d43539 Prevent Password fields from being cut/copied 2026-02-17 21:34:41 +01:00
Alaric
3ce93bd99d Fix loginInfo load
- Changed .xml -> .py because pack.Get does not allow .xml extension
- Added production guard to not be able to run python code with it
2026-02-17 15:56:23 +02:00
onurcan488
5ce1479707 some changes 2026-02-16 21:35:28 +03:00
rtw1x1
6db7c72650 Merge pull request #66 from MindRapist/mr-14
Mr 14
2026-02-16 17:56:16 +00:00
Mind Rapist
a32a6afb08 Fog fixes 2026-02-16 16:48:10 +02:00
Mind Rapist
caf6476428 Fog fixes 2026-02-16 16:41:12 +02:00
d1str4ught
1efd43b59e Merge pull request #65 from MindRapist/mr-13
Guild window tab fixes
2026-02-16 02:01:56 +01:00
d1str4ught
4bee017834 Merge pull request #64 from SunTrustDev/bugfix/std-guild-removal
Fix entirely guild member removal
2026-02-16 02:01:14 +01:00
Mind Rapist
635b329aa5 Guild window tab fixes 2026-02-16 02:31:23 +02:00
SuntrustDev
d351a79aae Fix entirely guild member removal:
- Add target menu "Remove from guild" button
- Proper confirm modal with translations
- Fix confirm modal when deleting user from Guilds section of Friends List
- Fix leader removal from Guild section of Friends list
2026-02-16 01:25:14 +01:00
rtw1x1
205ae5fb4b Merge pull request #62 from onurcan488/main
A few edits and bug fixes.
2026-02-15 20:47:18 +00:00
rtw1x1
9ea759fbe9 Merge pull request #63 from MindRapist/mr-12
Various fixes
2026-02-15 20:45:51 +00:00
Mind Rapist
74c416e9ed Various fixes 2026-02-15 21:42:17 +02:00
onurcan488
b7818387c0 Revert "Merge branch 'pr/61'"
This reverts commit ebe9b37176, reversing
changes made to 60fdca6d9a.
2026-02-15 21:26:15 +03:00