Compare commits

..

121 Commits

Author SHA1 Message Date
sanasol
d0831b3b83 fix(ci): use APPLE_APP_SPECIFIC_PASSWORD for notarization 2026-02-03 03:03:51 +01:00
sanasol
5cf9fa3af4 fix(ci): switch to built-in electron-builder notarization
- Remove custom afterSign hook (scripts/notarize.js)
- Enable built-in notarization with "notarize": true
- Use APPLE_ID_PASSWORD env var for electron-builder
- Restore full build (dmg + zip) to test blockmap

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 03:00:30 +01:00
sanasol
ee4909cc72 fix(ci): build only DMG for macOS to avoid blockmap hang
- Skip zip target, only build DMG
- Blockmap generation for universal+zip was hanging indefinitely
- DMG alone should complete faster

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 02:49:36 +01:00
sanasol
9d63e6e971 fix(ci): revert to universal macOS build with single notarization
- Replace separate ARM64 and x64 builds with single universal build
- Use --universal flag for fat binary (both archs in one app)
- Update package.json mac target to use "universal" arch
- Single notarization instead of double (fixes duplicate notarize calls)
- Simplify workflow by removing separate macOS release jobs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 02:28:11 +01:00
sanasol
153868fb87 fix(macos): improve notarization with timeout and graceful failure
Changes:
- Add 30 minute timeout for notarization (fail fast)
- Add SKIP_NOTARIZE=true env var to skip notarization entirely
- Don't fail build if notarization fails (app still code-signed)
- Add NOTARIZE_FAIL_ON_ERROR=true to fail build on notarization error
- Add forceCodeSigning, strictVerify, type=distribution to mac config
- Disable electron-builder built-in notarize (using custom script)

This prevents CI from hanging forever waiting for Apple's notarization
service and reduces wasted GitHub Actions minutes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 03:00:47 +01:00
sanasol
743d7f2b7c fix(ci): use macos-latest for ARM64 builds 2026-01-31 20:02:07 +01:00
sanasol
759a7089c4 fix(ci): use macos-15-large for Intel x64 builds (macos-13 retired) 2026-01-31 20:00:13 +01:00
sanasol
0a5cc3f6d7 feat(ci): separate macOS arm64 and x64 builds with individual code signing
Changes:
- Split macOS build into two separate jobs: build-macos-arm64 and build-macos-x64
- ARM64 builds on macos-14 (M1 runner) for native Apple Silicon builds
- x64 builds on macos-13 (Intel runner) for native Intel builds
- Each build has its own code signing and notarization process
- Artifacts renamed with -arm64 and -x64 suffixes for clarity
- Separate release jobs for each architecture
- Updated package.json mac targets from "universal" to ["arm64", "x64"]

This fixes code signing issues when building universal binaries and allows
faster parallel builds for each architecture.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 19:58:35 +01:00
sanasol
499d9a5a6d Merge sanasol/develop into develop 2026-01-31 19:54:46 +01:00
Fazri Gading
7b2acd49b6 chore: sync package-lock with package.json 2026-01-31 22:58:02 +08:00
Fazri Gading
7b9951e72d Update release.yml 2026-01-31 20:34:57 +08:00
Fazri Gading
e81a0167c1 Merge pull request #246 from amiayweb/fix/v2.2.0-failed-release
Fix/v2.2.0 failed release
2026-01-31 20:32:31 +08:00
Fazri Gading
50c04b64df Merge branch 'develop' into fix/v2.2.0-failed-release 2026-01-31 20:32:15 +08:00
Fazri Gading
28e5fa35e1 update package-lock.json 2026-01-31 20:05:33 +08:00
Fazri Gading
52e7eafe0b fix: redo package.json arch 2026-01-31 19:22:09 +08:00
Fazri Gading
3de5c2eaa3 fix: removed arm64 flags 2026-01-31 19:19:34 +08:00
Fazri Gading
5147e1856f fix: preserves arch x64 on linux target for #242 2026-01-31 18:16:39 +08:00
Fazri Gading
a21e7e4910 chose: add auto-patch system for pre-release JAR 2026-01-31 05:52: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
f8cf41972d fix: build and release for tag push-only in release.yml 2026-01-31 04:34:58 +08:00
Fazri Gading
ea0f87c46a chore: delete icon.png, moved to build folder 2026-01-31 04:23:55 +08:00
Fazri Gading
a5b3fe02c8 chore: delete icon.ico, moved to build folder 2026-01-31 04:23:33 +08:00
Fazri Gading
0bb82a0b3d Release v2.2.0 2026-01-31 04:22:05 +08:00
Fazri Gading
eccdcf223e Release v2.2.0 2026-01-31 04:15:50 +08:00
Fazri Gading
a09b082152 Release v2.2.0 2026-01-31 04:04:34 +08:00
Fazri Gading
f1d01ac78c docs: add recordings form, fix OS list 2026-01-31 02:56:37 +08:00
AMIAY
bfe0156606 Add Discord invite link to rpc 2026-01-30 19:02:12 +01:00
Fazri Gading
78e97bdbb7 feat: create two columns for settings page 2026-01-31 01:42:20 +08:00
Fazri Gading
769bc2054c fix: GPU preference hint to Laptop-only 2026-01-31 00:52:02 +08:00
Fazri Gading
5337441d97 feat: add Indonesian language translation 2026-01-31 00:51:24 +08:00
Fazri Gading
12453d2dda fix: src.tar.zst and srcinfo missing files 2026-01-30 23:50:54 +08:00
Fazri Gading
803df90fb6 fix: pkgbuild version to 2.1.2 2026-01-30 23:50:29 +08:00
Fazri Gading
6c31c39abd fix: removed override tar version 2026-01-30 23:23:13 +08:00
Fazri Gading
b5ab8b78e8 fix: upgrade electron/rebuild to 4.0.3 2026-01-30 22:50:14 +08:00
Fazri Gading
343f7b8016 Merge branch 'develop' 2026-01-30 22:39:43 +08:00
Fazri Gading
fa568fcce7 fix: re-add universal arch for mac 2026-01-30 22:39:26 +08:00
Fazri Gading
a6ecd2c167 Merge branch 'develop' 2026-01-30 22:26:50 +08:00
Fazri Gading
3e1c4aef73 fix: upgrade tar to ^7.5.6 version 2026-01-30 22:24:56 +08:00
Fazri Gading
1c14c3f603 fix: removed 'check disk space' alert on permission file error 2026-01-30 22:13:01 +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
sanasol
dfe9ed2a89 ci: set 6-hour max timeout for macOS notarization
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 20:59:28 +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
Fazri Gading
4db8016a28 chore: delete warning of Ubuntu-Debian at Linux Prequisites section 2026-01-29 23:15:54 +08:00
Fazri Gading
e0fd7e6900 chore: update quickstart link in README.md 2026-01-29 23:14:22 +08:00
AMIAY
93a2a98028 Update installation subtitle 2026-01-29 03:38:46 +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
Terromur
baa585d6b3 Fix PKGBUILD 2026-01-29 04:49:02 +05:00
Terromur
a5b930a9f0 Fix PKGBUILD-git 2026-01-29 04:45:44 +05:00
xSamiVS
b708f4a7d7 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)"
2026-01-29 03:25:47 +08:00
Alex
28a4f65f21 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>
2026-01-29 03:24:39 +08:00
Fazri Gading
966de83ead fix: change version release to 7.pwr 2026-01-29 03:23:19 +08:00
Fazri Gading
bc7f46cf45 fix: change default release version to 7.pwr 2026-01-29 03:22:30 +08:00
Fazri Gading
534b3f1f34 fix: change default version to 7.pwr in main.js 2026-01-29 03:19:17 +08:00
Fazri Gading
a07f0f1de1 fix: timeout getLatestClient
fixes #138
2026-01-29 03:01:38 +08:00
Terromur
bf29112848 Merge pull request #218 from BlackSystemCoder/develop
Add Russian language support
2026-01-28 22:01:35 +05:00
Zakhar Smokotov
0e4e332dab Update ru.json 2026-01-28 19:53:46 +03:00
Zakhar Smokotov
779f6820cb Update ru.json 2026-01-28 19:49:37 +03:00
Zakhar Smokotov
4fc4d77415 Update ru.json 2026-01-28 19:47:52 +03:00
Zakhar Smokotov
de193e991f Update ru.json 2026-01-28 19:46:30 +03:00
Zakhar Smokotov
d69695e499 Update ru.json 2026-01-28 19:45:29 +03:00
Zakhar Smokotov
4fff87f221 fixed untranslated place 2026-01-28 19:40:39 +03:00
Zakhar Smokotov
4cd76bb96d Fixed Java runtime name and fixed typo 2026-01-28 19:39:41 +03:00
Zakhar Smokotov
721d287036 Update ru.json 2026-01-28 19:33:36 +03:00
Zakhar Smokotov
e491bf1a84 fix 2026-01-28 19:17:37 +03:00
Zakhar Smokotov
89f981b586 Some updates in Russian language localization file 2026-01-28 19:16:19 +03:00
Fazri Gading
9cf504bbcc chore: drafting documentation on SERVER.md 2026-01-28 23:41:27 +08:00
sanasol
0aaf74a3db fix: add verbose logging to notarize script for debugging
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:14:59 +01:00
sanasol
be78f67439 chore: update package-lock.json
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:04:13 +01:00
sanasol
d0b9ae1da8 ci: separate macOS release from main release job
macOS notarization is slow (5-10 min). Now release is created
immediately when Windows/Linux/Arch complete, and macOS uploads
to the same release when notarization finishes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:01:57 +01:00
sanasol
e8105cb30e feat: add macOS code signing and notarization support
- Add entitlements.mac.plist for hardened runtime
- Add notarize.js post-sign hook for Apple notarization
- Update package.json with signing config and @electron/notarize dep
- Update GitHub Actions workflow with signing secrets

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 14:48:40 +01:00
Zakhar Smokotov
e7110936d8 Add Russian language support
Added Russian (ru) to the list of available languages.
2026-01-28 16:27:48 +03:00
AMIAY
79456e43a6 Merge pull request #213 from amiayweb/fix/update-system-improvements 2026-01-28 03:14:05 +01:00
sanasol
dd2dbc6f08 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>
2026-01-28 01:48:58 +01:00
Fazri Gading
c4acb32fcd Update support_request.yml 2026-01-28 05:16:00 +08:00
Fazri Gading
fbcbafb9b5 chore: remove Windows and Linux ARM64 information on the README.md 2026-01-28 04:26:42 +08:00
Terromur
86ed33358c Merge pull request #210 from amiayweb/fix/steamdeck-libzstd
fix: Steam Deck/Ubuntu crash - use system libzstd.so
2026-01-27 23:51:04 +05:00
sanasol
9ec97f9d33 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>
2026-01-27 19:40:42 +01:00
Fazri Gading
ee18455b4b chore: add downloads counter in README.md 2026-01-27 21:14:53 +08:00
Fazri Gading
a5c931b26d chore: add offline-mode warning to the README.md 2026-01-27 18:45:55 +08:00
Fazri Gading
661a0c9eed Update README.md 2026-01-27 17:38:33 +08:00
AMIAY
9025800820 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.
2026-01-27 04:29:01 +01:00
AMIAY
34ee099ae2 french translate 2026-01-27 03:26:43 +01:00
AMIAY
e56b12cd72 userdata migration [need review from other OS] 2026-01-27 01:44:58 +01:00
Fazri Gading
6bd63f5b60 Merge branch 'amiayweb:main' into main 2026-01-27 04:14:19 +08:00
Fazri Gading
663ac5f834 Merge branch 'develop' fix PKGBUILD pkgname variable 2026-01-27 03:58:14 +08:00
Fazri Gading
3edee4b4eb fix: PKGBUILD pkgname variable fix 2026-01-27 03:55:01 +08:00
Fazri Gading
e5fec7c326 Merge branch 'main' into develop 2026-01-27 03:42:40 +08:00
Fazri Gading
7d2672b684 add hardware spec input in bug_report.yml 2026-01-27 03:41:26 +08:00
Fazri Gading
01823729ec fix screenshot input in feature_request.yml 2026-01-27 03:40:22 +08:00
Fazri Gading
639a2ab1b5 chore: add changelog in README.md 2026-01-27 03:38:20 +08:00
Fazri Gading
6b76eb365e Update bug_report.yml
Add logs textfield to bug report
2026-01-27 03:21:47 +08:00
Fazri Gading
6fa933fece Update support_request.yml
Added hardware specification
2026-01-27 03:19:06 +08:00
walti0
e7023dcf95 Polish language support (#195) 2026-01-27 03:06:16 +08:00
Fazri Gading
f4d966ee65 chore: fix ubuntu/debian part in README.md 2026-01-27 02:16:01 +08:00
Fazri Gading
ca835a868b Merge pull request #188 from TalesAmaral/patch-1
Update README.md
2026-01-27 00:19:05 +08:00
Fazri Gading
3a1b6039d0 Merge branch 'develop' into patch-1 2026-01-27 00:18:33 +08:00
Fazri Gading
7828454631 Update PKGBUILD-git 2026-01-27 00:15:25 +08:00
Fazri Gading
cc1c6c334c Update PKGBUILD 2026-01-27 00:14:53 +08:00
TalesAmaral
081ac926e3 Update README.md
BUILD.md location was changed and now this link is poiting to nothing
2026-01-26 11:49:39 -03:00
Fazri Gading
75a450c9ec Update README.md
adds information for Arch build
2026-01-26 18:54:53 +08:00
Fazri Gading
e426690632 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.
2026-01-26 18:33:07 +08:00
Fazri Gading
78f76afe0a 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.
2026-01-26 18:20:37 +08:00
Fazri Gading
131de1dcd7 fix: removes pacman build as it replaced by tar.zst and adds build:arch shortcut for pkgbuild 2026-01-26 17:56:44 +08:00
Fazri Gading
b39877f561 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.
2026-01-26 17:46:40 +08:00
Fazri Gading
0b1b448cce Merge branch 'main' into develop 2026-01-26 13:56:33 +08:00
Fazri Gading
aed00cd067 add arch package .pkg.tar.zst for release 2026-01-26 13:52:18 +08:00
Fazri Gading
eff6fcd520 fix: isbrokenlink should be true to remove the symlink 2026-01-26 12:24:24 +08:00
Fazri Gading
94d4586b97 fix: add pathexists for paths.js to check symlink 2026-01-26 12:09:48 +08:00
Fazri Gading
20faf36b37 fix: remove broken symlink after detected 2026-01-26 12:01:46 +08:00
Fazri Gading
375b422c73 Update README.md Windows Prequisites for ARM64 builds 2026-01-26 11:33:00 +08:00
Fazri Gading
b668bdb45a prepare release 2.1.1 2026-01-26 09:48:26 +08:00
Fazri Gading
653d4429ed prepare release 2.1.1
minor fix EPERM permission error
2026-01-26 09:36:03 +08:00
Fazri Gading
17e15c17f0 prepare release for 2.1.1
minor fix for EPERM error permission
2026-01-26 09:34:16 +08:00
Fazri Gading
b99b22e8bf fix: missing pacman builds 2026-01-26 09:23:15 +08:00
Fazri Gading
9303c17e57 Merge branch 'develop' of https://github.com/amiayweb/Hytale-F2P into develop 2026-01-26 08:20:55 +08:00
Fazri Gading
615ee5cadc 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.
2026-01-26 08:19:13 +08:00
5 changed files with 653 additions and 267 deletions

View File

@@ -16,7 +16,7 @@ jobs:
node-version: '22'
cache: 'npm'
- run: npm ci
- name: Build Windows Packages
run: npx electron-builder --win --publish never
- uses: actions/upload-artifact@v4
@@ -27,8 +27,10 @@ jobs:
dist/*.exe.blockmap
dist/latest.yml
# macOS Universal build (ARM64 + x64 in single binary)
build-macos:
runs-on: macos-latest
timeout-minutes: 120
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
@@ -37,14 +39,27 @@ jobs:
cache: 'npm'
- run: npm ci
- name: Build macOS Packages
run: npx electron-builder --mac --publish never
- name: Build macOS Universal Package
env:
# Code signing
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
# Notarization (built-in electron-builder)
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
run: npx electron-builder --mac --universal --publish never
- name: List built artifacts
run: ls -la dist/
- uses: actions/upload-artifact@v4
with:
name: macos-builds
path: |
dist/*.dmg
dist/*.zip
dist/*.blockmap
dist/latest-mac.yml
build-linux:
@@ -55,7 +70,7 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y libarchive-tools
- uses: actions/setup-node@v4
with:
node-version: '22'
@@ -84,7 +99,7 @@ jobs:
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install base packages
run: |
pacman -Syu --noconfirm
@@ -106,11 +121,11 @@ jobs:
- name: Build Arch Package
run: |
sudo -u builder bash << 'EOF'
sudo -u builder bash << 'EOFBUILD'
set -e
makepkg --printsrcinfo > .SRCINFO
makepkg -s --noconfirm
EOF
EOFBUILD
- name: Fix permissions for upload
if: always()
@@ -126,12 +141,13 @@ jobs:
.SRCINFO
include-hidden-files: true
# Create release with all builds
release:
needs: [build-windows, build-macos, build-linux, build-arch]
needs: [build-windows, build-linux, build-arch, build-macos]
runs-on: ubuntu-latest
if: |
startsWith(github.ref, 'refs/tags/v') ||
github.ref == 'refs/heads/main' ||
startsWith(github.ref, 'refs/tags/v') ||
github.ref == 'refs/heads/main' ||
github.event_name == 'workflow_dispatch'
permissions:
@@ -141,10 +157,29 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Download all artifacts
- name: Download Windows artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
name: windows-builds
path: artifacts/windows-builds
- name: Download Linux artifacts
uses: actions/download-artifact@v4
with:
name: linux-builds
path: artifacts/linux-builds
- name: Download Arch artifacts
uses: actions/download-artifact@v4
with:
name: arch-package
path: artifacts/arch-package
- name: Download macOS artifacts
uses: actions/download-artifact@v4
with:
name: macos-builds
path: artifacts/macos-builds
- name: Display structure of downloaded files
run: ls -R artifacts
@@ -161,10 +196,9 @@ jobs:
artifacts/arch-package/*.pkg.tar.zst
artifacts/arch-package/*.src.tar.zst
artifacts/arch-package/.SRCINFO
artifacts/linux-builds/**/*
artifacts/windows-builds/**/*
artifacts/macos-builds/**/*
artifacts/linux-builds/*
artifacts/windows-builds/*
artifacts/macos-builds/*
generate_release_notes: true
draft: true
prerelease: false

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
</dict>
</plist>

684
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "hytale-f2p-launcher",
"version": "2.2.0",
"version": "2.1.2",
"description": "A modern, cross-platform launcher for Hytale with automatic updates and multi-client support",
"homepage": "https://github.com/amiayweb/Hytale-F2P",
"main": "main.js",
@@ -25,7 +25,8 @@
"cross-platform",
"electron",
"auto-update",
"mod-manager"
"mod-manager",
"chat"
],
"maintainers": [
{
@@ -33,7 +34,7 @@
"url": "https://github.com/Terromur"
},
{
"name": "Fazri Gading",
"name": "Fari Gading",
"email": "fazrigading@gmail.com",
"url": "https://github.com/fazrigading"
}
@@ -44,6 +45,7 @@
},
"license": "MIT",
"devDependencies": {
"@electron/notarize": "^2.5.0",
"electron": "^40.0.0",
"electron-builder": "^26.4.0"
},
@@ -54,13 +56,16 @@
"dotenv": "^17.2.3",
"electron-updater": "^6.7.3",
"fs-extra": "^11.3.3",
"tar": "^7.5.7",
"tar": "^6.2.1",
"uuid": "^9.0.1"
},
"overrides": {
"tar": "$tar"
},
"build": {
"appId": "com.hytalef2p.launcher",
"productName": "Hytale F2P Launcher",
"artifactName": "${name}_${version}.${ext}",
"artifactName": "${name}_${version}_${arch}.${ext}",
"directories": {
"output": "dist"
},
@@ -73,14 +78,40 @@
".env"
],
"win": {
"target": "nsis",
"target": [
{
"target": "nsis",
"arch": [
"x64",
"arm64"
]
}
],
"icon": "build/icon.ico"
},
"linux": {
"target": [
"AppImage",
"deb",
"rpm"
{
"target": "AppImage",
"arch": [
"x64",
"arm64"
]
},
{
"target": "deb",
"arch": [
"x64",
"arm64"
]
},
{
"target": "rpm",
"arch": [
"x64",
"arm64"
]
}
],
"icon": "build/icon.png",
"category": "Game"
@@ -101,8 +132,15 @@
}
],
"icon": "build/icon.icns",
"artifactName": "${name}_${version}_${arch}.${ext}",
"category": "public.app-category.games"
"category": "public.app-category.games",
"hardenedRuntime": true,
"gatekeeperAssess": false,
"entitlements": "build/entitlements.mac.plist",
"entitlementsInherit": "build/entitlements.mac.plist",
"forceCodeSigning": true,
"strictVerify": true,
"type": "distribution",
"notarize": true
},
"nsis": {
"oneClick": false,

92
scripts/notarize.js Normal file
View File

@@ -0,0 +1,92 @@
console.log('[Notarize] Script loaded');
let notarize;
try {
notarize = require('@electron/notarize').notarize;
console.log('[Notarize] @electron/notarize loaded successfully');
} catch (err) {
console.error('[Notarize] Failed to load @electron/notarize:', err.message);
throw err;
}
const path = require('path');
// Timeout for notarization (30 minutes max)
const NOTARIZE_TIMEOUT_MS = 30 * 60 * 1000;
function withTimeout(promise, ms, message) {
return Promise.race([
promise,
new Promise((_, reject) =>
setTimeout(() => reject(new Error(message)), ms)
)
]);
}
exports.default = async function notarizing(context) {
console.log('[Notarize] afterSign hook called');
console.log('[Notarize] Context:', JSON.stringify({
platform: context.electronPlatformName,
appOutDir: context.appOutDir,
outDir: context.outDir
}, null, 2));
const { electronPlatformName, appOutDir } = context;
// Only notarize macOS builds
if (electronPlatformName !== 'darwin') {
console.log('[Notarize] Skipping: not macOS');
return;
}
// Check if notarization is disabled via env var
if (process.env.SKIP_NOTARIZE === 'true') {
console.log('[Notarize] Skipping: SKIP_NOTARIZE=true');
return;
}
// Check credentials
const hasAppleId = !!process.env.APPLE_ID;
const hasPassword = !!process.env.APPLE_APP_SPECIFIC_PASSWORD;
const hasTeamId = !!process.env.APPLE_TEAM_ID;
console.log('[Notarize] Credentials check:', { hasAppleId, hasPassword, hasTeamId });
if (!hasAppleId || !hasPassword || !hasTeamId) {
console.log('[Notarize] Skipping: missing credentials');
return;
}
const appName = context.packager.appInfo.productFilename;
const appPath = path.join(appOutDir, `${appName}.app`);
console.log('[Notarize] Starting notarization...');
console.log('[Notarize] App path:', appPath);
console.log('[Notarize] Team ID:', process.env.APPLE_TEAM_ID);
console.log('[Notarize] Timeout:', NOTARIZE_TIMEOUT_MS / 1000, 'seconds');
try {
await withTimeout(
notarize({
appPath,
appleId: process.env.APPLE_ID,
appleIdPassword: process.env.APPLE_APP_SPECIFIC_PASSWORD,
teamId: process.env.APPLE_TEAM_ID,
}),
NOTARIZE_TIMEOUT_MS,
`Notarization timed out after ${NOTARIZE_TIMEOUT_MS / 1000} seconds`
);
console.log('[Notarize] Notarization complete!');
} catch (error) {
console.error('[Notarize] Notarization failed:', error.message);
// Don't fail the build if notarization times out or fails
// The app will still be code-signed, just not notarized
if (process.env.NOTARIZE_FAIL_ON_ERROR !== 'true') {
console.warn('[Notarize] Continuing build without notarization (set NOTARIZE_FAIL_ON_ERROR=true to fail)');
return;
}
throw error;
}
};