* 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>
* fix: resolve cross-platform EPERM permissions errors
modManager.js:
- Switch from hardcoded 'junction' to dynamic symlink type based on OS (fixing Linux EPERM).
- Add retry logic for directory removal to handle file locking race conditions.
- Improve broken symlink detection during profile sync.
gameManager.js:
- Implement retry loop (3 attempts) for game directory removal in updateGameFiles to prevent EBUSY/EPERM errors on Windows.
paths.js:
- Prevent fs.mkdirSync failure in getModsPath by pre-checking for broken symbolic links.
* fix: missing pacman builds
* prepare release for 2.1.1
minor fix for EPERM error permission
* prepare release 2.1.1
minor fix EPERM permission error
* prepare release 2.1.1
* Update README.md Windows Prequisites for ARM64 builds
* fix: remove broken symlink after detected
* fix: add pathexists for paths.js to check symlink
* fix: isbrokenlink should be true to remove the symlink
* add arch package .pkg.tar.zst for release
* fix: release workflow for build-arch and build-linux
* build-arch job now only build arch .pkg.tar.zst package instead of the whole generic linux.
* build-linux job now exclude .pacman package since its deprecated and should not be used.
* fix: removes pacman build as it replaced by tar.zst and adds build:arch shortcut for pkgbuild
* aur: add proper VCS (-git) PKGBUILD
created clean VCS-based PKGBUILD following arch packaging conventions.
this explicitly marked as a rolling (-git) build and derives its version dynamically from git tags and commit history via pkgver(). previous hybrid approach has been changed.
key changes:
- use -git suffix to clearly indicate rolling source builds
- set pkgver=0 and compute the actual version via pkgver()
- build only a directory layout using electron-builder (--dir)
- avoid generating AppImage, deb, rpm, or pacman installers
- align build and package steps with Arch packaging guidelines
note: this PKGBUILD is intended for development and AUR use only and is not suitable for binary redistribution or release artifacts.
* ci: add fixed-version PKGBUILD for Arch Linux releases
this PKGBUILD intended for CI and GitHub release artifacts. targets tagged releases only and uses a fixed pkgver that matches the corresponding git tag. all of the VCS logic has been removed to PKGBUILD-git to ensure reproducible builds and stable versioning suitable for binary distribution.
the build process relies on electron-builder directory output (--dir) and packages only the unpacked application into a standard Arch Linux package (.pkg.tar.zst). other distro format are excluded from this path and handled separately.
this change establishes a clear separation between:
- rolling AUR development builds (-git)
- CI-generated, versioned Arch Linux release packages
the result is predictable artifact naming, correct version alignment, and Arch-compliant packaging for downstream users.
* Update README.md
adds information for Arch build
* Update README.md
BUILD.md location was changed and now this link is poiting to nothing
* Update PKGBUILD
* Update PKGBUILD-git
* chore: fix ubuntu/debian part in README.md
* Polish language support (#195)
* Update support_request.yml
Added hardware specification
* Update bug_report.yml
Add logs textfield to bug report
* chore: add changelog in README.md
* fix screenshot input in feature_request.yml
* add hardware spec input in bug_report.yml
* fix: PKGBUILD pkgname variable fix
* userdata migration [need review from other OS]
* french translate
* Add German and Swedish translations
Added de.json and sv.json locale files for German and Swedish language support. Updated i18n.js to register 'de' and 'sv' as available languages in the launcher.
* Update README.md
* chore: add offline-mode warning to the README.md
* chore: add downloads counter in README.md
* fix: Steam Deck/Ubuntu crash - use system libzstd.so
The bundled libzstd.so is incompatible with glibc 2.41's stricter heap
validation, causing "free(): invalid pointer" crashes.
Solution: Automatically replace bundled libzstd.so with system version
on Linux. The launcher detects and symlinks to /usr/lib/libzstd.so.1.
- Auto-detect system libzstd at common paths (Arch, Debian, Fedora)
- Backup bundled version as libzstd.so.bundled
- Create symlink to system version
- Add HYTALE_NO_LIBZSTD_FIX=1 to disable if needed
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* chore: remove Windows and Linux ARM64 information on the README.md
* Update support_request.yml
* fix: improve update system UX and macOS compatibility
Update System Improvements:
- Fix duplicate update popups by disabling legacy updater.js
- Add skip button to update popup (shows after 30s, on error, or after download)
- Add macOS-specific handling with manual download as primary option
- Add missing open-download-page IPC handler
- Add missing unblockInterface() method to properly clean up after popup close
- Add quitAndInstallUpdate alias in preload for compatibility
- Remove pulse animation when download completes
- Fix manual download button to show correct status and close popup
- Sync player name to settings input after first install
Client Patcher Cleanup:
- Remove server patching code (server uses pre-patched JAR from CDN)
- Simplify to client-only patching
- Remove unused imports (crypto, AdmZip, execSync, spawn, javaManager)
- Remove unused methods (stringToUtf8, findAndReplaceDomainUtf8)
- Move localhost dev code to backup file for reference
Code Quality Fixes:
- Fix duplicate DOMContentLoaded handlers in install.js
- Fix duplicate checkForUpdates definition in preload.js
- Fix redundant if/else in onProgressUpdate callback
- Fix typo "Harwadre" -> "Hardware" in preload.js
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add Russian language support
Added Russian (ru) to the list of available languages.
* chore: drafting documentation on SERVER.md
* Some updates in Russian language localization file
* fix
* Update ru.json
* Fixed Java runtime name and fixed typo
* fixed untranslated place
* Update ru.json
* Update ru.json
* Update ru.json
* Update ru.json
* Update ru.json
* fix: timeout getLatestClient
fixes#138
* fix: change default version to 7.pwr in main.js
* fix: change default release version to 7.pwr
* fix: change version release to 7.pwr
* docs: Add comprehensive troubleshooting guide (#209)
Add TROUBLESHOOTING.md with solutions for common issues including:
- Windows: Firewall configuration, duplicate mods, SmartScreen
- Linux: GPU detection (NVIDIA/AMD), SDL3_image/libpng dependencies,
Wayland/X11 issues, Steam Deck support
- macOS: Rosetta 2 for Apple Silicon, code signing, quarantine
- Connection: Server boot failures, regional restrictions
- Authentication: Token errors, config reset procedures
- Avatar/Cosmetics: F2P limitations documentation
- Backup locations for all platforms
- Log locations for bug reports
Solutions compiled from closed GitHub issues (#205, #155, #90, #60,
#144, #192) and community feedback.
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Standardize language codes, improve formatting, and update all locale files. (#224)
* Update German (Germany) localization
* Update Español (España) localization
* Update French (France) localization
* Update Polish (Poland) localization
* Update Portuguese (Brazil) localization
* Update Russian (Russia) localization
* Update Swedish (Sweden) localization
* Update Turkish (Turkey) localization
* Update language codes, names and alphabetical in i18n system
* Changed Spanish language name to the Formal name "Spanish (Spain)"
* Fix PKGBUILD-git
* Fix PKGBUILD
* delete cache after installation
* 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.
* Update installation subtitle
* chore: update quickstart link in README.md
* chore: delete warning of Ubuntu-Debian at Linux Prequisites section
* added featured server list from api
* Add Featured Servers page to GUI
* Update Discord invite URL in client patcher
* Add differential update system
* Remove launcher chat and add Discord popup
* fix: removed 'check disk space' alert on permission file error
* fix: upgrade tar to ^7.5.6 version
* fix: re-add universal arch for mac
* fix: upgrade electron/rebuild to 4.0.3
* fix: removed override tar version
* fix: pkgbuild version to 2.1.2
* fix: src.tar.zst and srcinfo missing files
* feat: add Indonesian language translation
* fix: GPU preference hint to Laptop-only
* feat: create two columns for settings page
* Add Discord invite link to rpc
* docs: add recordings form, fix OS list
* Release v2.2.0
* Release v2.2.0
* Release v2.2.0
* chore: delete icon.ico, moved to build folder
* chore: delete icon.png, moved to build folder
* fix: build and release for tag push-only in release.yml
* fix: gamescope steam deck issue fixes#186 hopefully
* Support branch selection for server patching
* chose: add auto-patch system for pre-release JAR
---------
Co-authored-by: TalesAmaral <57869141+TalesAmaral@users.noreply.github.com>
Co-authored-by: walti0 <95646872+walti0@users.noreply.github.com>
Co-authored-by: AMIAY <letudiantenrap.collab@gmail.com>
Co-authored-by: sanasol <mail@sanasol.ws>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Terromur <79866197+Terromur@users.noreply.github.com>
Co-authored-by: Zakhar Smokotov <zaharb840@gmail.com>
Co-authored-by: xSamiVS <samtaiebc@gmail.com>
* Update German (Germany) localization
* Update Español (España) localization
* Update French (France) localization
* Update Polish (Poland) localization
* Update Portuguese (Brazil) localization
* Update Russian (Russia) localization
* Update Swedish (Sweden) localization
* Update Turkish (Turkey) localization
* Update language codes, names and alphabetical in i18n system
* Changed Spanish language name to the Formal name "Spanish (Spain)"
Added de.json and sv.json locale files for German and Swedish language support. Updated i18n.js to register 'de' and 'sv' as available languages in the launcher.
* fix: resolve cross-platform EPERM permissions errors
modManager.js:
- Switch from hardcoded 'junction' to dynamic symlink type based on OS (fixing Linux EPERM).
- Add retry logic for directory removal to handle file locking race conditions.
- Improve broken symlink detection during profile sync.
gameManager.js:
- Implement retry loop (3 attempts) for game directory removal in updateGameFiles to prevent EBUSY/EPERM errors on Windows.
paths.js:
- Prevent fs.mkdirSync failure in getModsPath by pre-checking for broken symbolic links.
* fix: missing pacman builds
* Update README.md Windows Prequisites for ARM64 builds
* fix: remove broken symlink after detected
* fix: add pathexists for paths.js to check symlink
* fix: isbrokenlink should be true to remove the symlink
* add arch package .pkg.tar.zst for release
* fix: release workflow for build-arch and build-linux
* build-arch job now only build arch .pkg.tar.zst package instead of the whole generic linux.
* build-linux job now exclude .pacman package since its deprecated and should not be used.
* fix: removes pacman build as it replaced by tar.zst and adds build:arch shortcut for pkgbuild
* aur: add proper VCS (-git) PKGBUILD
created clean VCS-based PKGBUILD following arch packaging conventions.
this explicitly marked as a rolling (-git) build and derives its version dynamically from git tags and commit history via pkgver(). previous hybrid approach has been changed.
key changes:
- use -git suffix to clearly indicate rolling source builds
- set pkgver=0 and compute the actual version via pkgver()
- build only a directory layout using electron-builder (--dir)
- avoid generating AppImage, deb, rpm, or pacman installers
- align build and package steps with Arch packaging guidelines
note: this PKGBUILD is intended for development and AUR use only and is not suitable for binary redistribution or release artifacts.
* ci: add fixed-version PKGBUILD for Arch Linux releases
this PKGBUILD intended for CI and GitHub release artifacts. targets tagged releases only and uses a fixed pkgver that matches the corresponding git tag. all of the VCS logic has been removed to PKGBUILD-git to ensure reproducible builds and stable versioning suitable for binary distribution.
the build process relies on electron-builder directory output (--dir) and packages only the unpacked application into a standard Arch Linux package (.pkg.tar.zst). other distro format are excluded from this path and handled separately.
this change establishes a clear separation between:
- rolling AUR development builds (-git)
- CI-generated, versioned Arch Linux release packages
the result is predictable artifact naming, correct version alignment, and Arch-compliant packaging for downstream users.
* Update README.md
adds information for Arch build
* Update README.md
BUILD.md location was changed and now this link is poiting to nothing
* Update PKGBUILD
* Update PKGBUILD-git
* chore: fix ubuntu/debian part in README.md
* Polish language support (#195)
* add hardware specification in support_request.yml
* Add logs text field in bug_report.yml
* chore: add changelog in README.md
* fix screenshot input in feature_request.yml
* add hardware spec input in bug_report.yml
---------
Co-authored-by: TalesAmaral <57869141+TalesAmaral@users.noreply.github.com>
Co-authored-by: walti0 <95646872+walti0@users.noreply.github.com>
* Update Spanish locale and add missing CurseForge API Key translation
- Updated the Spanish locale name to distinguish between multiple locale types.
- Added missing translation for the page indicating the missing CurseForge API Key.
* Implemented Turkish locale support
* Add Turkish locale to available languages
* Add missing comma in contributor links
* Correct Portuguese language name in available languages
---------
Co-authored-by: Fazri Gading <fazrigading@gmail.com>
* update main branch to release/v2.0.2b (#86)
* add more linux pkgs, create auto-release and pre-release feature for Github Actions
* removed package-lock from gitignore
* update .gitignore for local build
* add package-lock.json to maintain stability development
* update version to 2.0.2b also add deps for rpm and arch
* update 2.0.2b: add arm64 support, product and executable name, maintainers; remove snap;
* update 2.0.2b: add latest.yml for win & linux, arm64 support; remove snap
* fix release build naming
* Prepare release v2.0.2b
* feat: add 'Close launcher on game start' option and improve app termination behavior
- Added 'Close launcher on game start' setting in GUI and backend.
- Implemented automatic app quit after game launch if setting is enabled.
- Added Cmd+Q (Mac) and Ctrl+Q/Alt+F4 (Win/Linux) shortcuts to quit the app.
- Updated 'window-close' handler to fully quit the app instead of just closing the window.
- Added i18n support for the new setting in English, Spanish, and Portuguese.
---------
Co-authored-by: Fazri Gading <fazrigading@gmail.com>
Co-authored-by: Arnav Singh <hi.arnavsingh3@gmail.com>
Introduces animated installation effects overlay and makes the progress bar draggable. Adds maximize window support, improves window controls styling, and enforces a single app instance. Removes the unused Skins page and related translations. Refines various UI details for a more polished user experience.
* - Implemented i18n.
- Updated UI elements to use localized strings for various messages and confirmations.
- Added language selection functionality in settings with appropriate event handling.
- Created English localization file with translations for all new strings.
- Updated backend to save and load user-selected language preferences.
* Add Spanish localization for the GUI
* Add Portuguese (Brazil) localization for the GUI
* update main branch to release/v2.0.2b (#86)
* add more linux pkgs, create auto-release and pre-release feature for Github Actions
* removed package-lock from gitignore
* update .gitignore for local build
* add package-lock.json to maintain stability development
* update version to 2.0.2b also add deps for rpm and arch
* update 2.0.2b: add arm64 support, product and executable name, maintainers; remove snap;
* update 2.0.2b: add latest.yml for win & linux, arm64 support; remove snap
* fix release build naming
* Prepare release v2.0.2b
* Update localization for game repair and GPU settings
Added new localization entries for game repair and GPU preferences.
* Update spanish localization for game repair and GPU settings
* Update portuguese (brazil) for game repair and GPU settings
* Update localization for system logs in English, Spanish, and Portuguese
---------
Co-authored-by: Fazri Gading <fazrigading@gmail.com>