merge branch 'main' (lost 4 commits) into develop

This commit is contained in:
Fazri Gading
2026-01-25 13:54:15 +08:00
9 changed files with 466 additions and 422 deletions

0
.env.example Normal file
View File

View File

@@ -635,6 +635,20 @@
</div> </div>
</div> </div>
<!-- Installation effects overlay -->
<div id="installationEffects" class="installation-effects" style="display: none;">
<div class="space-effects">
<div class="warp-line"></div>
<div class="warp-line"></div>
<div class="warp-line"></div>
<div class="warp-line"></div>
<div class="warp-line"></div>
<div class="warp-line"></div>
<div class="warp-line"></div>
<div class="warp-line"></div>
</div>
</div>
<div id="chatUsernameModal" class="chat-username-modal" style="display: none;"> <div id="chatUsernameModal" class="chat-username-modal" style="display: none;">
<div class="chat-username-modal-content"> <div class="chat-username-modal-content">
<div class="chat-username-modal-header"> <div class="chat-username-modal-header">

View File

@@ -207,6 +207,11 @@ function setupSettingsElements() {
} }
if (closeLauncherCheck) {
closeLauncherCheck.addEventListener('change', saveCloseLauncher);
}
// UUID event listeners // UUID event listeners
if (copyUuidBtn) { if (copyUuidBtn) {
copyUuidBtn.addEventListener('click', copyCurrentUuid); copyUuidBtn.addEventListener('click', copyCurrentUuid);
@@ -392,6 +397,31 @@ async function loadCloseLauncher() {
} }
async function saveCloseLauncher() {
try {
if (window.electronAPI && window.electronAPI.saveCloseLauncher && closeLauncherCheck) {
const enabled = closeLauncherCheck.checked;
await window.electronAPI.saveCloseLauncher(enabled);
}
} catch (error) {
console.error('Error saving close launcher setting:', error);
}
}
async function loadCloseLauncher() {
try {
if (window.electronAPI && window.electronAPI.loadCloseLauncher) {
const enabled = await window.electronAPI.loadCloseLauncher();
if (closeLauncherCheck) {
closeLauncherCheck.checked = enabled;
}
}
} catch (error) {
console.error('Error loading close launcher setting:', error);
}
}
async function savePlayerName() { async function savePlayerName() {
try { try {
if (!window.electronAPI || !settingsPlayerName) return; if (!window.electronAPI || !settingsPlayerName) return;

View File

@@ -638,6 +638,9 @@ function setupUI() {
// Setup retry button // Setup retry button
setupRetryButton(); setupRetryButton();
// Setup draggable progress bar
setupProgressDrag();
lockPlayButton(true); lockPlayButton(true);
setTimeout(() => { setTimeout(() => {
@@ -738,7 +741,6 @@ window.LauncherUI = {
// Make installation effects globally available // Make installation effects globally available
// Draggable progress bar functionality // Draggable progress bar functionality
function setupProgressDrag() { function setupProgressDrag() {
if (!progressOverlay) return; if (!progressOverlay) return;

View File

@@ -2,7 +2,7 @@
Type=Application Type=Application
Name=Hytale-F2P Name=Hytale-F2P
Comment=A modern, cross-platform launcher for Hytale with automatic updates and multi-client support Comment=A modern, cross-platform launcher for Hytale with automatic updates and multi-client support
Exec=/opt/Hytale-F2P/hytale-f2p-launcherv2 Exec=/opt/Hytale-F2P/hytale-f2p-launcher
Categories=Game; Categories=Game;
Icon=Hytale-F2P Icon=Hytale-F2P
Terminal=false Terminal=false

View File

@@ -2,7 +2,7 @@
# Maintainer: Fazri Gading <fazrigading@gmail.com> # Maintainer: Fazri Gading <fazrigading@gmail.com>
pkgname=Hytale-F2P-git pkgname=Hytale-F2P-git
_pkgname=Hytale-F2P _pkgname=Hytale-F2P
pkgver=2.0.2b.r120.gb05aeef pkgver=2.0.11.r120.gb05aeef
pkgrel=1 pkgrel=1
pkgdesc="Hytale-F2P - unofficial Hytale Launcher for free to play with multiplayer support" pkgdesc="Hytale-F2P - unofficial Hytale Launcher for free to play with multiplayer support"
arch=('x86_64') arch=('x86_64')
@@ -10,11 +10,11 @@ url="https://github.com/amiayweb/Hytale-F2P"
license=('custom') license=('custom')
makedepends=('npm' 'git' 'rpm-tools' 'libxcrypt-compat') makedepends=('npm' 'git' 'rpm-tools' 'libxcrypt-compat')
source=("git+$url.git" "Hytale-F2P.desktop") source=("git+$url.git" "Hytale-F2P.desktop")
sha256sums=('SKIP' '8c78a6931fade2b0501122980dc238e042b9f6f0292b5ca74c391d7b3c1543c0') sha256sums=('SKIP' '46488fada4775d9976d7b7b62f8d1f1f8d9a9a9d8f8aa9af4f2e2153019f6a30')
pkgver() { pkgver() {
cd "$_pkgname" cd "$_pkgname"
printf "2.0.2b.r%s.g%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" printf "2.0.11.r%s.g%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
} }
build() { build() {

View File

@@ -15,6 +15,12 @@ class AppUpdater {
} }
setupAutoUpdater() { setupAutoUpdater() {
// Enable dev mode for testing (reads dev-app-update.yml)
// Only enable in development, not in production builds
if (process.env.NODE_ENV === 'development' || !app.isPackaged) {
autoUpdater.forceDevUpdateConfig = true;
console.log('Dev update mode enabled - using dev-app-update.yml');
}
// Configure logger for electron-updater // Configure logger for electron-updater
// Create a compatible logger interface // Create a compatible logger interface

View File

@@ -447,13 +447,6 @@ ipcMain.handle('launch-game', async (event, playerName, javaPath, installPath, g
ipcMain.handle('install-game', async (event, playerName, javaPath, installPath, branch) => { ipcMain.handle('install-game', async (event, playerName, javaPath, installPath, branch) => {
try { try {
console.log(`[IPC] install-game called with parameters:`);
console.log(` - playerName: ${playerName}`);
console.log(` - javaPath: ${javaPath}`);
console.log(` - installPath: ${installPath}`);
console.log(` - branch: ${branch}`);
console.log(`[IPC] branch type: ${typeof branch}, value: ${JSON.stringify(branch)}`);
// Signal installation start // Signal installation start
if (mainWindow && !mainWindow.isDestroyed()) { if (mainWindow && !mainWindow.isDestroyed()) {
mainWindow.webContents.send('installation-start'); mainWindow.webContents.send('installation-start');
@@ -633,7 +626,6 @@ ipcMain.handle('load-close-launcher', () => {
}); });
ipcMain.handle('select-install-path', async () => { ipcMain.handle('select-install-path', async () => {
const result = await dialog.showOpenDialog(mainWindow, { const result = await dialog.showOpenDialog(mainWindow, {
properties: ['openDirectory'], properties: ['openDirectory'],
title: 'Select Installation Folder' title: 'Select Installation Folder'