Commit Graph

34 Commits

Author SHA1 Message Date
sanasol
6333263ef9 Fix: Don't fallback to legacy mode when using skip list
When HYTALE_PATCH_SKIP is set, the legacy fallback was ignoring
the skip list and patching all occurrences anyway.

Now if skip list is active or HYTALE_NO_LEGACY_FALLBACK=1,
the legacy fallback is disabled.

Also found 4th occurrence at 0x1bc5d67 with metadata byte 0x89
that legacy mode was patching - this may be the crash culprit.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 03:51:32 +01:00
sanasol
654deca933 Add HYTALE_PATCH_SKIP to skip specific occurrences by index
HYTALE_PATCH_SKIP=0 - skip first occurrence only
HYTALE_PATCH_SKIP=0,2 - skip first and third
HYTALE_PATCH_SKIP=0 HYTALE_PATCH_LIMIT=1 - patch only second occurrence

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 03:38:09 +01:00
sanasol
aab67e8e28 Add HYTALE_PATCH_LIMIT to patch only first N occurrences
Use HYTALE_PATCH_LIMIT=1 to patch only first occurrence,
HYTALE_PATCH_LIMIT=2 for first two, etc.

Helps isolate which specific occurrence causes the crash.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 03:34:36 +01:00
sanasol
3953827f4a Add offset logging to debug which locations are being patched
Shows hex offset, bytes before/after each patch location to help
identify if we're patching false positives.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 03:31:51 +01:00
sanasol
81d1e7c113 Add HYTALE_PATCH_MODE env var to test different string formats
HYTALE_PATCH_MODE=utf16le - Use pure UTF-16LE (no length prefix)
HYTALE_PATCH_MODE=length-prefixed - Use length-prefixed format (default)

This helps debug if the length-prefixed format is causing crashes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 03:00:29 +01:00
sanasol
d8f90bd1ff Disable Discord URL patching entirely
The Discord URL patch was causing buffer overflow crashes and has no
practical effect on F2P functionality anyway.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 02:44:13 +01:00
sanasol
50491abc69 Fix buffer overflow in Discord URL patch - likely cause of crashes
The Discord URL patch was writing 28 bytes (.gg/MHkEjepMQ7, 14 chars)
where only 20 bytes existed (.gg/hytale, 10 chars), corrupting 8 bytes
of adjacent data in the binary.

Changes:
- Use same-length Discord URL: .gg/santop (10 chars)
- Add length check to UTF-16LE fallback path
- Add length check and zero-fill to findAndReplaceDomainSmart

This buffer overflow explains why the crash happened on some systems
(Steam Deck, Ubuntu LTS) but not others - depending on what data
was adjacent to the patched string.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 02:41:38 +01:00
sanasol
c92c5bec3c Add debug options and jemalloc support for Linux memory issues
Debug env vars for clientPatcher:
- HYTALE_SKIP_SENTRY_PATCH=1 - Skip sentry URL patch (60->26 chars)
- HYTALE_SKIP_SUBDOMAIN_PATCH=1 - Skip subdomain prefix patches

Game launcher Linux options:
- HYTALE_USE_JEMALLOC=1 - Use jemalloc allocator instead of glibc

This helps isolate which patch causes "free(): invalid pointer"
on Steam Deck and Ubuntu LTS.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 02:31:38 +01:00
sanasol
2582d9b6d1 Fix memory corruption by null-padding shorter replacement patterns
When replacing domain strings with shorter ones, the replaceBytes function
was only copying the new bytes without clearing the leftover bytes from
the old pattern. This caused "free(): invalid pointer" crashes on Steam
Deck and Ubuntu due to corrupted string metadata in the .NET AOT binary.

Fix: Fill the entire old pattern region with 0x00 before writing the
new bytes. This ensures no leftover data remains that could corrupt
the binary structure.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 02:10:31 +01:00
AMIAY
e56b12cd72 userdata migration [need review from other OS] 2026-01-27 01:44:58 +01:00
Fazri Gading
ba95187ee6 fix: err_bad_request code 416 due to file size matched remote size, updated timeout to 15mins 2026-01-26 04:58:02 +08:00
AMIAY
9e54e07b22 R2 cdn added 2026-01-25 21:26:46 +01:00
AMIAY
ad3c73563d temp jar patcher 2026-01-25 17:02:02 +01:00
AMIAY
35f900d6ab Update fileManager.js 2026-01-25 14:15:19 +01:00
AMIAY
8326deddb1 Merge branch 'develop' of https://github.com/amiayweb/Hytale-F2P into develop 2026-01-25 13:31:38 +01:00
AMIAY
b11b78f7dc trying 2026-01-25 13:31:08 +01:00
Terromur
0ca8b4e02f Deleting garbage envs 2026-01-25 17:17:36 +05:00
sanasol
f287cb55b9 Merge remote-tracking branch 'origin/develop' into develop 2026-01-25 01:27:29 +01:00
sanasol
d87db04653 feat(patcher): Implement DualAuth patcher with enhanced server patching
- Introduce DualAuthPatcher with support for hybrid authentication
- Update default auth domain to `auth.sanasol.ws`
- Integrate Java detection and bundled JRE handling for patcher execution
- Add server patch flag for avoiding redundant patching
- Automate DualAuthPatcher setup: download, compile, and execute with dependencies
- Enhance patching logic for extended logging and modularity
2026-01-25 01:27:19 +01:00
Fazri Gading
ea21fb15d6 fix: JRE retry button 2026-01-25 05:18:22 +08:00
sanasol
3d54cea9e7 feat(patcher): Support variable-length domains (4-16 chars)
- Add support for domains from 4 to 16 characters
- Domains <= 10 chars: direct replacement, subdomains stripped
- Domains 11-16 chars: split mode (first 6 chars -> subdomain prefix)
- Add length-prefixed byte format encoding for client binary
- Verify binary contents when checking if already patched
- Detect file updates and archive old backups with timestamps
- Fallback to legacy UTF-16LE format for older binaries
- Update patcher version to 2.0.0

Based on patching approach from Mollomm1/Hytale-EMULATOR

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 21:11:20 +01:00
Fazri Gading
9c8a12f25c fix: lastProgressTime variable init 2026-01-25 01:58:54 +08:00
Fazri Gading
a7d0523186 feat: auto-resume download process & auto-retry if disconnected (#143) 2026-01-25 01:36:20 +08:00
AMIAY
87b168dd4c fix 2026-01-24 12:22:15 +01:00
AMIAY
c900129c1f fix patch 2026-01-24 12:05:10 +01:00
AMIAY
3579d82776 fix (to try) 2026-01-24 01:41:09 +01:00
AMIAY
3983fdb1bc pre-release & release game version [to check] 2026-01-23 17:54:57 +01:00
Fazri Gading
f433120084 fix: adds EGL env var to detect installed NVIDIA GPU 2026-01-23 13:11:19 +08:00
Fazri Gading
42fd51486a feat: auto-detect GPU for Windows and MacOS (#87) 2026-01-21 22:13:47 +08:00
AMIAY
72a151930e Patch Discord invite URLs in client binary 2026-01-21 13:30:49 +01:00
Rahul Sahani
b05aeef66d feat: Add Repair Game button, UserData backup and cache clearing (#79)
* feat: Add Repair Game functionality including UserData backup and cache clearing

* feat: Add In-App Logs Viewer and Logs Folder shortcut

* feat: Add Open Logs feature

* disable dev tools

* Fix Settings UI

* fix reorder settings section in index.html

relocated sections in settings from most used to least:
1. game options (playername, opengamedir, repair, GPUpreference)
2. player uuid management
3. discord integration rich presence
4. custom java path

---------

Co-authored-by: Fazri Gading <super.fai700@gmail.com>
2026-01-21 06:27:33 +08:00
Fazri Gading
905a9d754c Merge GPU preference feature branch to main branch version 2.0.2 for testing (#3)
* modernized UI for GPU Preference option

* feat: auto-detect dedicated GPU on hybrid laptops (iGPU+dGPU)

* feat: detailed GPU info in auto-detection feature on startup

* feat: add GPU options for launcher

- Add GPU preference setting (Auto/Integrated/Dedicated)
- Implement Linux GPU selection with DRI_PRIME and NVIDIA env vars
- Add GPU detection using Electron's app.getGPUInfo()
- Update settings UI with GPU preference dropdown
- Integrate GPU preference into game launch process

* feat: auto-detect dedicated GPU on hybrid laptops (iGPU+dGPU)

* added fallbacks to and option to use integrated GPU.

* add package-lock and fix deps version

* changed 'Nvidia' string to 'NVIDIA'

* fix: selecting `dedicated` option while using nvidia GPU did not set its specific env variables

* remove unused `CONFIG_FILE` variable on launcher core modules

* fix: duplicated save-load gpu detection functions

* move game option settings to the top, while custom java to the bottom

* fix: settings-header margin-bottom from 3rem to 1rem and supress line-clamp warning
2026-01-20 23:45:38 +08:00
AMIAY
21f8527ed4 update 2.0.2 2026-01-19 23:15:29 +01:00
greenkod
7dbc900338 refactor: split main file into smaller modules for better maintainability 2026-01-18 21:29:37 +03:00