Commit Graph

116 Commits

Author SHA1 Message Date
sanasol
e1a3f919a2 Fix JRE flatten failing silently on Windows EPERM
When extracting the bundled JRE, flattenJREDir renames files from
the nested jdk subdirectory up one level. On Windows this fails with
EPERM when antivirus or file indexing holds handles open, leaving
the JRE nested and unfindable — causing "Server failed to boot".

- Fall back to copy+delete when rename gets EPERM/EACCES/EBUSY
- getBundledJavaPath checks nested JRE subdirs as last resort
2026-02-26 23:39:43 +01:00
sanasol
66493d35ca Fix community link order: TG Group > TG Channel > Chat
Consistent order across all files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 01:11:17 +01:00
sanasol
9628363455 Update default wrapper config: remove -XX:+UseCompactObjectHeaders strip flag 2026-02-24 19:32:25 +01:00
amiay
2f5820e850 Merge pull request 'Mods update' (#2) from amiay/hytale-f2p:develop into develop
Reviewed-on: https://git.sanhost.net/sanasol/hytale-f2p/pulls/2
2026-02-24 16:22:55 +00:00
dsqd2505-netizen
d5828463f9 Added mods version selector
Added mods version selector
2026-02-24 17:04:46 +01:00
sanasol
0d15659dc0 v2.4.1: Replace raw wrapper script editor with structured config UI
Replace the raw textarea script editor with a structured form for Java
wrapper configuration. Users now manage two lists (JVM flags to strip,
args to inject with server/always condition) instead of editing bash/batch
scripts directly. Scripts are generated at launch time from the structured
config. Includes collapsible script preview for power users.
2026-02-24 16:53:19 +01:00
sanasol
19c8991a44 v2.4.0: Add Send Logs, fix Intel Arc iGPU misdetection
- Add Send Logs button for one-click log submission to support
- Fix Intel Arc Graphics (Meteor Lake/Lunar Lake) on bus 00 being
  classified as discrete GPU instead of integrated
2026-02-24 13:57:10 +01:00
sanasol
320ca54758 Add Send Logs button for one-click log submission to support
Collects launcher logs, game client logs, and config snapshot into a ZIP
file and uploads to auth server. Shows submission ID for sharing with
support. Includes i18n for all 11 locales.
2026-02-24 13:50:23 +01:00
sanasol
e14d56ef48 v2.3.9: Fix stalled processes and AOT cache crash
- Auto-kill stalled HytaleClient/java processes before launch and repair
  (cross-platform: Windows taskkill+PowerShell, macOS/Linux pkill)
- Remove HytaleServer.aot before launch to prevent incompatible AOT cache
  causing fastutil ClassNotFoundException on singleplayer
- safeRemoveDirectory auto-kills processes on EPERM/EBUSY before retry

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 12:52:07 +01:00
sanasol
cb7f7e51bf v2.3.8: auto-update agent from GitHub releases, add dl1 mirror fallback
- Agent auto-update: check GitHub releases API for new versions, download
  only when update available, track version in .version file
- Add dl1.htdwnldsan.top as backup-2 mirror in patches config sources
- Add dl1.htdwnldsan.top as primary non-Cloudflare mirror
- Graceful fallback: use existing agent if update check or download fails

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 23:31:28 +01:00
sanasol
9b20c454d3 v2.3.7: add non-Cloudflare mirror fallback for blocked regions
Users in Russia/Ukraine where Cloudflare IPs are blocked can now
download game files via htdwnldsan.top (direct VPS → MEGA redirect).
Both manifest fetch and archive downloads try mirrors automatically
on ETIMEDOUT/ECONNREFUSED errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 13:21:19 +01:00
sanasol
4e04d657b7 v2.3.6: fix UUID loss during launcher updates
Players were losing character data (inventory, armor, backpack) after
each launcher update because config.json corruption wiped the UUID
mapping. Same username, new UUID = server treats as new player.

Fix: UUIDs now stored in separate uuid-store.json that saveConfig()
can never touch. Added safety check to refuse destructive writes
when config file exists but loads empty. Includes 28 regression tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 23:10:13 +01:00
sanasol
6d811fd7e0 v2.3.5: hardened fallback chain for patch URL discovery
6-step fallback: auth.sanasol.ws → htdwnldsan.top → DNS TXT via DoH → disk cache → hardcoded URL. Practically unkillable by DMCA.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 20:22:57 +01:00
sanasol
6c369edb0f v2.3.4: dynamic patches URL from auth server
Launcher now fetches patches base URL from /api/patches-config endpoint
instead of using hardcoded domain. URL cached for 5 minutes, no fallback
to hardcoded domain - requires auth server connection or cached URL.
Enables instant CDN switching without launcher updates.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 19:27:55 +01:00
sanasol
fdd8e59ec4 v2.3.3: fix singleplayer crash when install path has spaces
JAVA_TOOL_OPTIONS -javaagent path was not quoted, causing JVM to
truncate at first space. Affects all users with spaces in install
path (e.g. "Hytale F2P Launcher").

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 15:54:17 +01:00
sanasol
e7a033932f v2.3.2: fix truncated download cache, update Discord link
Fix pre-release downloads failing with "unexpected EOF" by validating
cached PWR file sizes against manifest expected sizes. Previously only
checked > 1MB which accepted truncated files. Also update Discord
invite link to new server across all files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 15:14:20 +01:00
sanasol
0dafb17c7b v2.3.1: CDN redirect gateway, fix token username bug
- Migrate patch downloads to auth server redirect gateway (302 -> CDN)
  Allows instant CDN switching via admin panel without launcher update
- Fix identity token "Player" username mismatch on fresh install
  Add token username verification with retry in fetchAuthTokens
- Refactor versionManager to use mirror manifest via auth.sanasol.ws/patches
- Add optimal patch routing (BFS) for differential updates
- Add PATCH_CDN_INFRASTRUCTURE.md documentation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 14:36:09 +01:00
sanasol
0a71fdac8c v2.3.0: migrate auto-update to Forgejo, add Arch build
- Switch auto-update from GitHub to Forgejo (generic provider)
- Dynamically resolve latest release URL via Forgejo API
- Add pacman target to Linux builds
- Hide direct upload URL in repository secret

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 11:55:35 +01:00
AMIAY
4502c11bd0 Use new version API and default to v8 PWR 2026-02-11 10:43:18 +01:00
sanasol
fdbca6b9da refactor: replace pre-patched JAR download with ByteBuddy agent
Migrate from downloading pre-patched server JARs from CDN to downloading
the DualAuth ByteBuddy Agent from GitHub releases. The server JAR stays
pristine - auth patching happens at runtime via -javaagent: flag.

clientPatcher.js:
- Replace patchServer() with ensureAgentAvailable()
- Download dualauth-agent.jar to Server/ directory
- Remove serverJarContainsDualAuth() and validateServerJarSize()

gameLauncher.js:
- Set JAVA_TOOL_OPTIONS env var with -javaagent: for runtime patching
- Update logging to show agent status instead of server patch count

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 11:44:13 +01:00
Fazri Gading
5f3c9e0411 fix: redact proxy_url and remove timed out emoji 2026-02-02 06:17:35 +08:00
Fazri Gading
2e0bdeee5a fix: cache invalidation from .env prevents multiple launch attempts
for all env related, it is necessary to clear cache first, otherwise on few launch attempts the game wouldn't run
2026-02-02 06:09:14 +08:00
Fazri Gading
d8d7702d9d fix: remove duplicate check 2026-02-02 04:31:41 +08:00
AMIAY
3ac2f25955 Add smart proxy with direct-fallback and logging 2026-02-01 19:46:22 +01:00
Fazri Gading
7c8a106f06 Merge pull request #257 from amiayweb/fix/libzstd-reorder
fix: reorder fedora libzstd paths to first iteration
2026-02-02 01:38:27 +08:00
Fazri Gading
0015ecbe80 fix: add game_running_marker to prevent duplicate launches 2026-02-02 01:35:43 +08:00
AMIAY
b1d01a2f34 fix: Prevent JAR file corruption during proxy downloads
Fixed binary file corruption when downloading through proxy by using PassThrough stream to preserve data integrity while tracking download progress.
2026-02-01 17:35:25 +01:00
AMIAY
cd25f124bd Add proxy client and route downloads through it 2026-02-01 17:23:00 +01:00
Fazri Gading
3370628b6e revert add deps for generateLocalTokens 2026-02-01 23:25:13 +08:00
Fazri Gading
3fee5b0f72 revert generateLocalTokens, wrong analysis on game launching issue 2026-02-01 23:24:22 +08:00
Fazri Gading
6ee23e1944 fix: major bug - detach game process to avoid launcher-held handles causing zombie process 2026-02-01 23:12:29 +08:00
Fazri Gading
b84457d88d fix: major bug - hytale won't launch with laptop machine and ghost processes 2026-02-01 22:58:20 +08:00
Fazri Gading
d91ba72969 Merge commit '6847a54c0f25219490324521ec98c326a353e1a8' into fix/eperm-in-repair-button 2026-02-01 21:27:59 +08:00
Fazri Gading
ecaaa28866 fix: invalid generated token that caused hangs on exit [windows testing needed] 2026-02-01 19:26:24 +08:00
Fazri Gading
ad34741627 fix: EPERM error in Repair Game Button [windows testing needed] 2026-02-01 19:24:59 +08:00
Alex
62430fe8f0 fix: comprehensive UUID/username persistence bug fixes (#252)
* fix: comprehensive UUID/username persistence bug fixes

Major fixes for UUID/skin reset issues that caused players to lose cosmetics:

Core fixes:
- Username rename now preserves UUID (atomic rename, not new identity)
- Atomic config writes with backup/recovery system
- Case-insensitive UUID lookup with case-preserving storage
- Pre-launch validation blocks play if no username configured
- Removed saveUsername calls from launch/install flows

UUID Modal fixes:
- Fixed isCurrent badge showing on wrong user
- Added switch identity button to change between saved usernames
- Fixed custom UUID input using unsaved DOM username
- UUID list now refreshes when player name changes
- Enabled copy/paste in custom UUID input field

UI/UX improvements:
- Added translation keys for switch username functionality
- CSS user-select fix for UUID input fields
- Allowed Ctrl+V/C/X/A shortcuts in Electron

Files: config.js, gameLauncher.js, gameManager.js, playerManager.js,
launcher.js, settings.js, main.js, preload.js, style.css, en.json

See UUID_BUGS_FIX_PLAN.md for detailed bug list (18 bugs, 16 fixed)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(i18n): add switch username translations to all locales

Added translation keys for username switching functionality:
- notifications.noUsername
- notifications.switchUsernameSuccess
- notifications.switchUsernameFailed
- notifications.playerNameTooLong
- confirm.switchUsernameTitle
- confirm.switchUsernameMessage
- confirm.switchUsernameButton

Languages updated: de-DE, es-ES, fr-FR, id-ID, pl-PL, pt-BR, ru-RU, sv-SE, tr-TR

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* docs: move UUID_BUGS_FIX_PLAN.md to docs folder

* docs: update UUID_BUGS_FIX_PLAN with complete fix details

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 05:01:58 +08:00
Fazri Gading
6847a54c0f feat: enhance gpu detection, drafting 2026-02-01 04:11:55 +08:00
Fazri Gading
95d47f0e60 fix: reorder fedora libzstd paths to first iteration 2026-02-01 03:17:20 +08:00
AMIAY
14a63febc1 Support branch selection for server patching 2026-01-30 22:45:21 +01:00
Fazri Gading
2cdef44fec fix: gamescope steam deck issue fixes #186 hopefully 2026-01-31 05:26:43 +08:00
Fazri Gading
a09b082152 Release v2.2.0 2026-01-31 04:04:34 +08:00
AMIAY
30a4327655 Remove launcher chat and add Discord popup 2026-01-30 14:44:46 +01:00
AMIAY
33a0e219fc Add differential update system 2026-01-30 04:11:10 +01:00
AMIAY
fbdd9ee0cf Update Discord invite URL in client patcher 2026-01-30 02:28:45 +01:00
AMIAY
22ea2f56d3 Add Featured Servers page to GUI 2026-01-29 19:00:13 +01:00
AMIAY
5039bcdadf added featured server list from api 2026-01-29 17:07:29 +01:00
AMIAY
4775e9adbd Enforce 16-char player name limit and update mod sync
Added a maxlength attribute to the player name input and enforced a 16-character limit in both install and settings scripts, providing user feedback if exceeded. Refactored modManager.js to replace symlink-based mod management with a copy-based system, copying enabled mods to HytaleSaves\Mods and removing legacy symlink logic to improve compatibility and avoid permission issues.
2026-01-29 03:33:56 +01:00
AMIAY
90db069e4c delete cache after installation 2026-01-29 00:58:47 +01:00
Fazri Gading
966de83ead fix: change version release to 7.pwr 2026-01-29 03:23:19 +08:00
Fazri Gading
a07f0f1de1 fix: timeout getLatestClient
fixes #138
2026-01-29 03:01:38 +08:00