Releases: dawiisss/DzLinux
Release list
1.8.1
Quick Install / Update
Run this command in your terminal to automatically detect your system and install / update the latest version (.deb, .rpm, or AppImage):
curl -sSL https://raw.githubusercontent.com/dawiisss/DzLinux/main/install.sh | bashChanged
- Electron Security Update: Bumped
electronfrom43.3.0to43.7.5to resolve multiple high-severity security vulnerabilities. - Dependency Upgrades: Updated
axiosto^1.20.0,eslintto^10.11.0,globalsto^17.12.0,jestto^30.5.2, andlint-stagedto^17.6.0. - Hardened Package Overrides: Enforced strict minimum patch versions in
pnpm-workspace.yamloverrides forfast-uri(^3.1.8),js-yaml(^4.3.2), and@xmldom/xmldom(^0.8.15), and configured@parcel/watcher: falsebuild policy for pnpm v11 compatibility.
Fixed
- Dependabot Security Vulnerabilities: Resolved 17 Dependabot security alerts across
electron(sandboxed window restrictions, cross-origin reads, webview worker node integration, preload cache poisoning),fast-uri(host confusion and SSRF),js-yaml(empty merge source CPU denial-of-service), and@xmldom/xmldom(injection and ReDoS).
1.8.0
Quick Install / Update
Run this command in your terminal to automatically detect your system and install / update the latest version (.deb, .rpm, or AppImage):
curl -sSL https://raw.githubusercontent.com/dawiisss/DzLinux/main/install.sh | bashAdded
- Synchronous Settings Loader: Added and exported a synchronous
loadSettings()helper insettings.jsspecifically for early startup flag initialization prior toapp.whenReady(). - Async Steam Path Unit Tests: Added dedicated unit test coverage for
getSteamInstallPathAsync()andfindDayzWorkshopFolderAsync()insteamPaths.test.js. - Workshop URL Opener Unit Tests: Added unit test coverage for
openWorkshopPage()verifying URL parameter sanitization and Electron shell opening ingame.test.js. - Launch Port and Settings Unit Tests: Added unit tests verifying defensive port defaulting in
game.test.jsand synchronousloadSettings()insettings.test.js.
Changed
- Proton Launch Process Spawn: Replaced
child_process.execFilewithspawnusingstdio: "ignore"inlaunchProton.jsto avoidmaxBuffermemory limits and prevent unexpected process termination during long DayZ gameplay sessions. - Dependency Cache Memory Bounds: Capped the Steam Workshop dependency resolver cache at 1,000 entries with bulk eviction to 90% capacity in
steamDependencyResolver.jsto prevent unbounded memory growth and reduce churn at the boundary. - Direct Toast Icon Identifiers: Standardized
showToast()calls acrossserverRow.jsandmodManager.jsto pass clean icon name strings ("star","download") rather than raw SVG constants or HTML elements. - UI Copy Casing Standardization: Converted hardcoded uppercase button and label text (
Refresh,Servers:,Players:,Filtered:) inindex.html, reset dialog text insettings.js(cannot), and dependency error tags inmodManager.js([Error: ...]). - Early Wayland Ozone Bootstrap: Moved Chromium command-line switch configuration (
UseOzonePlatform,ozone-platform=wayland) inmain.jsto execute prior toapp.whenReady(), ensuring Chromium activates native Wayland Ozone mode during initial process bootstrap. - External URL Opener Standardization: Replaced
child_process.execFile("xdg-open")inopenWorkshopPage()with Electron'sshell.openExternal(url)for robust sandbox/Flatpak compatibility and error propagation. - Table Colspan Consistency: Aligned table skeleton loading placeholders and empty-state rows across
index.html,serverBrowserRender.js, andfavorites.jstocolspan="9"to maintain visual alignment with the 9-column Security/Trust layout. - Preload API Cleanliness: Removed orphaned
onCompleteIPC channel and listener references frompreload.js. - Markdown Heading Anchor Hygiene: Replaced literal ampersands (
&) withandin markdown headings across all repository documentation. - Sync Filesystem Deprecation Notices: Annotated legacy synchronous filesystem methods
getSteamInstallPath()andfindDayzWorkshopFolder()insteamPaths.jswith JSDoc@deprecatedwarnings directing callers to async equivalents (Rule 13). - Build Utility Import Hygiene: Removed unused
_pathimport fromscripts/lib/utils.js. - Centralized
existsAsyncUtility: Consolidated the duplicateexistsAsynchelper (previously defined locally insteamPaths.js,game.js, andlaunchProton.js) into the sharedfileUtils.jsmodule. - Synchronous Settings Loader Documentation: Added JSDoc to
loadSettings()insettings.jsexplicitly documenting it as a startup-only constraint required for pre-ready Chromium command-line switch initialization. - Server Pipeline Step Numbering: Fixed step comment numbering gap (4→6) in
servers.jsfetchDayZServersto be sequential.
Fixed
- Test Environment Variable Teardown: Wrapped
process.env.TEST_VARtest manipulation inprepareEnv.test.jswith atry ... finallyblock to guarantee environment restoration on assertion failures (Rule 8). - Early Wayland Settings Load Error: Fixed a startup
TypeError: settingsManager.loadSettings is not a functioninmain.jswhich caused Wayland flags to fail silently. - Game Launch Missing Port Exception: Fixed a potential
TypeErrorinlaunchDayZandlaunchViaSteamwhenportargument is missing or non-string by safely defaulting to"2302". - History Favorite Port Mapping: Fixed a bug where adding a favorite directly from the Connection History view assigned the game port as the A2S query port instead of preserving
queryPort. - Gitignore Cleanliness: Removed obsolete
server-portal/entry from.gitignore. - UI Label Casing: Changed hardcoded uppercase
ACTIVE LINK:label in the Steam profile header to title caseActive Link:. - Mod Manager IPC Error Propagation: Added
.catch()handlers with toast error feedback to fire-and-forget IPC calls (openWorkshop,openFolder,subscribefallback) inmodManager.jsso failures are surfaced to the user instead of silently swallowed.
1.7.0
Quick Install / Update
Run this command in your terminal to automatically detect your system and install / update the latest version (.deb, .rpm, or AppImage):
curl -sSL https://raw.githubusercontent.com/dawiisss/DzLinux/main/install.sh | bashAdded
- Server Trust Score System: Implemented a new heuristic-based trust scoring engine (
trustScore.js) that analyzes DayZ servers to calculate a security rating. Verified communities, active moderation tools, high population counts, and password protection all contribute to the final tier calculation. - Strict IP Verification: Built a background fetching system that downloads, parses, and caches (
24hTTL) an open-source JSON list (verified_ips.json) of known, verified DayZ community server IPs and ports from GitHub. Servers matching this strict criteria receive an immense Trust Score boost and custom tooltip recognition, preventing malicious servers from spoofing popular names. - Trust Score UI Integration: Added a new Security/Trust column to both the Server Browser and Favorites tables. Servers display dynamically colored shields (Green for High Trust, Yellow for Modded/Moderated, Gray for Unverified) based on their evaluated score.
- Settings Toggle: Added an "Enable Trust Score Indicators" toggle in the Appearance & Audio settings. Disabling this toggle instantly removes the security columns globally and suppresses the background network polling for the verified IPs list to save bandwidth.
- Path Guard Security Tests: Added a comprehensive 16-test unit test suite for
pathGuard.js, covering allowed path validation, path traversal attack rejection, non-string input handling, dynamic mod directory inclusion from settings, and graceful fallback when settings fail to load.
Changed
-
Watchlist Performance: Optimized server lookups in background polling and UI rendering from
$O(N)$ nested.find()iterations to$O(1)$ Map lookups, ensuring stable UI performance regardless of the master server list size. -
Toast Icon Identifier Cleanup: Replaced raw
<app-icon>HTML strings and SVG constants passed toshowToast()with direct icon name identifiers ("trash","cube","info","eye") acrosswatchlist.js,serverRow.js, andcontextMenu.js. TheshowToast()function already auto-wraps icon names natively. -
UI Casing Compliance: Converted hardcoded uppercase filter labels (
PERSPECTIVE:,CATEGORY:,MAP:,COUNTRY:,SHORTLISTS:,CONNECTION:) inindex.htmlto sentence case. The CSS class.filter-labelalready appliestext-transform: uppercasefor visual rendering. Also changed uppercase UI copy ("MISMATCH","UPDATE ALL") inlogParser.jssuggested fix text to title case ("Mismatch","Update All").
Fixed
- Server UI Data Streaming: Fixed a race condition where the backend process streamed the initial server batch to the UI before background async checks (Monetization & Verified IPs) finished processing. This caused hit-or-miss tag rendering on the first launch. The pipeline now waits until the servers are fully enriched before streaming to the frontend.
- DOM Recycler Stale Data: Fixed an issue in the server list DOM recycler where
tdSecuritycells (Trust Score shields) andtdMonetizationwere completely ignored during row recycling. The renderer now dynamically evaluates state changes on the fly and updates shields dynamically without needing an app restart. - Favorites Ping Worker Abort: Added a generation-based cancellation mechanism to the favorites ping worker pool. Rapidly clicking the refresh button now aborts any stale worker loops from a previous run, preventing background query accumulation and potential memory growth.
- Bohemia Monetization Fetching: Fixed an issue where the Bohemia monetization scraper broke due to layout changes on the official website. The app now fetches an open-source JSON list (
monetized_ips.json) directly from the DzLinux GitHub repository, falling back gracefully to the legacy archived Bohemia page (old.bohemia.net) if the CDN is unreachable. - Cache Tag Persistence: Fixed a bug in the disk serializer (
server_cache.json) where it failed to save theverifiedCommunityattribute. This caused Verified Server shields to disappear on app re-launches occurring inside the 5-minute cache window.
Security
- Path Guard Prefix Boundary Vulnerability: Fixed a directory traversal vulnerability where the IPC path guard's
startsWith()check lacked a path-separator boundary check. This previously allowed paths sharing a string prefix (like/optional-evil/payloadbypassing an/optcheck) to be incorrectly allowed. The check now strictly enforces boundary separation or exact matching.
1.6.0
Quick Install / Update
Run this command in your terminal to automatically detect your system and install / update the latest version (.deb, .rpm, or AppImage):
curl -sSL https://raw.githubusercontent.com/dawiisss/DzLinux/main/install.sh | bashAdded
- Server Connection History & Analytics: Added a dedicated Connection History & Analytics tab that records server joins, displaying server name, map, last connected time, session count, last ping, and custom server notes. History data is persisted in a standalone
history.jsonfile with automatic 30-day retention pruning and a 500-record cap. Legacy history entries fromsettings.jsonare automatically migrated on first load. - Server Connection Analytics Modal: Built an interactive analytics modal powered by Chart.js for each history entry. Displays player count and ping recorded during your connection sessions over selectable 24h, 7d, and 30d timeframes, aggregate stats (total sessions, average ping, peak players), keyboard shortcuts (Escape key dismissal), and an inline custom server note editor.
- Toggle Settings for History and Watchlist: Added "Enable Connection History & History Tab" and "Enable Watchlist & Watchlist Tab" checkboxes in Settings. Disabling either feature hides its tab and sidebar entry, suppresses all background recording and polling, and hides the "Recently Played" filter pill. Re-enabling Watchlist immediately restarts background polling without requiring an app restart.
Changed
- Open Source Acknowledgments: Updated the About modal and
acknowledgments.txtto acknowledgechart.js(MIT) open-source usage. - Dependency & Security Updates: Updated
axios(1.19.0),electron(43.3.0),globals(17.9.0), andlint-staged(17.3.0) viapnpm update. Resolved all Dependabot/pnpm security advisories (fast-uri,brace-expansion) with 0 vulnerabilities remaining.
1.5.0
Quick Install / Update
Run this command in your terminal to automatically detect your system and install / update the latest version (.deb, .rpm, or AppImage):
curl -sSL https://raw.githubusercontent.com/dawiisss/DzLinux/main/install.sh | bashAdded
- Watchlist Auto-Join & Interactive Status Controls: Renamed the Watchlist active column header to "Active" and added an "Auto-Join" toggle switch to each item in the Watchlist table along with an interactive server connection modal (
#autoJoinModal). When an active watched server threshold triggers with Auto-Join enabled, DzLinux displays a 5-second cancelable countdown modal. When Auto-Join is disabled, clicking the notification or toast opens a regular connection prompt without a countdown timer. Clicking the "Last Status" badge or toggling a watched server's active switch immediately resets its status back to monitoring, and active desktop notification instances are retained in main-process memory to prevent garbage collection from breaking click listeners across tabs. - Expanded Automated Test Coverage: Added 198 automated tests (242 → 440 total, overall statement coverage ~65% → ~77%). New suites cover the DXVK configuration writer (now 100%), the custom Proton launch pipeline (~94% — argument building,
%command%expansion, GameMode/MangoHud wrappers, exit handling), server query port selection (~95% — CDN port → cached port → +1/+2/+3/27016 offset scanning, stale cache eviction, 30-day TTL, 5,000-entry cap, debounced cache writes), and all 46 IPC channels (~95% — input validation, payload filtering, and ping cancellation at the main-process boundary).
Changed
- Internal IPC Architecture: Split the ~380-line IPC registration module into focused domain modules under
src/main/ipc/(settings, servers, game, mods, watchlist, steamworks, system, plus a shared path-traversal guard). This is a pure refactor: all 46 IPC channels behave identically, verified by the full test suite without modification. - Simplified Settings Loading: Removed a legacy sync/async settings-loading fallback from 14 call sites across the main process and deleted the redundant
loadSettingsalias. Settings now load through a single asynchronous path everywhere. - Dependency Updates: Updated
eslint(10.8.0),electron(43.2.0),globals(17.8.0),lint-staged(17.2.0), andminimatch(10.2.6 — the first release to declare the patchedbrace-expansion ^5.0.8floor).
Fixed
- Address Validation Consistency: Aligned the renderer's Direct Join address validation with the main process's
net.isIP()checks. Leading-zero IPv4 addresses (e.g.01.2.3.4) are now rejected, and all IPv6 forms (compressed addresses, zone IDs, IPv4-embedded suffixes) behave identically on both sides. A new parity test suite (103 cases) prevents the two validators from drifting apart again. - Test Isolation for Server Query Cache: Fixed the server query test suite so cache tests run against a temporary directory instead of the real user cache at
~/.config/dzlinux/query_port_cache.json. - Favorite Server Validation: Manually adding a favorite now validates the IP/hostname and port in the renderer before saving (matching the main-process checks), and favorites are only committed to local state after a successful save — a rejected or failed save no longer leaves a phantom entry or an unhandled promise rejection.
- Unbounded Favorites Pinging: Refreshing favorite pings now runs through a bounded worker pool (at most 50 concurrent queries) instead of firing one GameDig query per favorite simultaneously, preventing UDP socket exhaustion on large favorite lists.
- Toast Icon Identifier: Replaced the last emoji-as-icon toast call site ("Checking for updates...") with the registered
rotate-ccwicon per project icon conventions.
Security
- Vulnerability Remediation: Resolved a high-severity denial-of-service advisory in transitive dependency
brace-expansion(CVE-2026-14257 / GHSA-mh99-v99m-4gvg) by forcingbrace-expansionto^5.0.8via workspace overrides inpnpm-workspace.yaml. Also upgraded@electron/asarto^4.2.1so release packaging stays on the compatibleminimatch10.x chain, avoiding thebrace_expansion_1.expand is not a functionpackaging failure class addressed in 1.4.7.pnpm auditnow reports zero known vulnerabilities.
1.4.7
Quick Install / Update
Run this command in your terminal to automatically detect your system and install / update the latest version (.deb, .rpm, or AppImage):
curl -sSL https://raw.githubusercontent.com/dawiisss/DzLinux/main/install.sh | bashAdded
- Safer Settings Validation: Settings values are now checked before they are saved. Background server query concurrency is limited to 10–500, and invalid values are automatically corrected.
- Reliable Background Operations: Added cancellation support for stale server pings and mod verification checks so refreshes and cancelled launches do not leave unnecessary work running in the background.
- System Compatibility & Environment Diagnostics: Added a system compatibility scanner in the Diagnostics tab that checks Steam installation status, installed Proton versions, Workshop storage space and write permissions, GameMode daemon status, MangoHud binary presence, and Vulkan GPU driver manifests.
Changed
- More Reliable Settings and Cache Storage: Settings, watchlists, server data, and query-port information now use asynchronous, atomic file writes to reduce UI blocking and prevent partially-written JSON files.
- Clearer Error Feedback: Update downloads, external links, preference saves, and background mod operations now report failures instead of leaving controls stuck or failing silently.
- Improved Startup Stability: Application startup now initializes logging before loading settings and handles unrecoverable startup errors cleanly.
- Safer Server Queries: Server query requests are bounded, stale requests can be cancelled, and overlapping mod download checks are prevented.
Fixed
- Direct Join IP & Port Validation: Enforced strict IPv4, IPv6, and FQDN domain validation in Direct Join inputs and server connection handlers to prevent launching DayZ with invalid addresses.
- Offline Server Connection Guard: Updated
query-modsto returnnullon GameDig query timeouts or failures, preventing unreachable servers from being treated as vanilla servers and halting game launches with a clear toast notification. - Background Query Limit: Users can no longer enter a background query concurrency value above 500. Values pasted or typed above the limit are immediately replaced with 500 (Counts higher than 500 can cause RAM overloads and crash the app).
- Mod Verification Cancellation: Cancelling the missing-mod dialog now stops its polling and prevents a delayed game launch from running afterward.
- Update Download Recovery: Failed update downloads restore the download controls and display an actionable error message.
- Non-blocking Master List Writes: Master-list generation no longer uses synchronous filesystem writes during its asynchronous workflow.
Security
- Vulnerability Remediation: Resolved 10 security advisories across transitive dependencies (
fast-uri,tar,brace-expansion,js-yaml) by setting workspace overrides inpnpm-workspace.yaml. - Security Patch for Axios: Upgraded
axiosdependency from^1.17.0to^1.18.1to address security advisories (GHSA-f4gw-2p7v-4548, GHSA-hcpx-6fm6-wx23, GHSA-7q8q-rj6j-mhjq, GHSA-mwf2-3pr3-8698).
1.4.6
Quick Install / Update
Run this command in your terminal to automatically detect your system and install / update the latest version (.deb, .rpm, or AppImage):
curl -sSL https://raw.githubusercontent.com/dawiisss/DzLinux/main/install.sh | bashAdded
- Environment Settings Tooltips: Added interactive info tooltips (
<app-icon name="info">) to Linux environment and wrapper options (MangoHud, GameMode, DXVK Async, PROTON_LOG, MALLOC_TRIM, PROTON_NO_ESYNC) in Settings, clarifying custom Proton support and providing exact Steam Launch Option syntax (mangohud %command%,gamemoderun %command%, etc.). - Proton Environment Enhancements: Ensured
MANGOHUD=1is automatically populated in process environment variables when launching through custom Proton paths. - Persistent Search Filters: Search query, perspective, category, maps list, countries list, and filter flag parameters are now saved and persisted across launcher restarts.
- Filter Options Menu: Added a dedicated options button (
more-vertical) on the far right of the filters bar that opens a context menu with options to manually save current filters, reset filters to default, and toggle the Save Automatically preference. - New SVG Icons: Registered
rotate-ccw,more-vertical,bell,target, andzapSVG vector shapes in the central registry.
Changed
- SVG Toast Icons: Migrated all toast notifications throughout the application to explicitly use vector SVG icons (e.g.
save,alert,check,clipboard,eye,target,bell,zap) instead of standard emojis. SimplifiedshowToast()to automatically render standard icon identifiers as SVGs with a robust text fallback. - Master List Generation Improvements: Refactored the server crawler and Steam API logic to retrieve a more complete and accurate master list of DayZ servers.
- Enhanced Fake Server Protection: Implemented player limit validations and strict inline deduplication checks to further reduce malicious and spoofed fake servers.
- MangoHud Configuration: Migrated MangoHud configuration from writing/backing up the global
MangoHud.conffile to passing options via theMANGOHUD_CONFIGenvironment variable, eliminating disk writes, backups, and restore delays.
Fixed
- Country Filter Display: Fixed an issue where the Country dropdown would disappear when no countries matched the active filters, keeping it visible at all times.
- Startup Layout Shifting: Hardcoded
compact-modeandlayout-modernclasses on the HTML<body>element to align with settings defaults, preventing layout reflow shifts during application boot. - Server Query Cache Bounding: Bounded the query port cache Map to 5,000 entries with oldest-entry eviction on overflow to prevent unbounded memory growth.
- Game Launch Error UX: Added pre-flight path validation for both Proton and the DayZ game binary. The launcher now rejects the game launch promise with helpful messages and displays a toast notification to the user rather than failing silently.
- Log Stream Stability: Improved
logger.jsto wait for file stream opening and catch unhandled stream error events, preventing application crashes during intensive logging.
1.4.5
Quick Install / Update
Run this command in your terminal to automatically detect your system and install / update the latest version (.deb, .rpm, or AppImage):
curl -sSL https://raw.githubusercontent.com/dawiisss/DzLinux/main/install.sh | bashAdded
- Warnings for Corrupted Mods: Added clear warning messages when mod metadata files (
mod.cpp) are unreadable to help troubleshoot corrupted mod installations. - Hide Favorites Filter: Added a "Hide Favorites" filter to hide favorited servers from the main browser list (designed to help players with large favorite lists easily browse other servers).
Changed
- More Responsive Settings & Mod Loading: Optimized settings saving and mod list loading so changes take effect instantly and the interface feels faster.
- Sleeker, Cleaner Text: Standardized casing across all menus and buttons (e.g., "GB free of", "Refresh", "Subscribe all") for a consistent look and feel.
- Performance Cleanups: Tidied up background code, removed unused modules, and improved app startup efficiency.
Fixed
- Server Connection & Playlists:
- Fixed a connection bug where clicking "Connect" from certain views could fail to launch the game.
- Completely removed "Hide Fakes" filter button and its associated state logic, the hosted serverlist already does checks to combat fakes.
- Favorite servers that are unlisted or offline now remain visible in the Favorites tab as dimmed placeholders, rather than disappearing completely.
- Fixed favorites migration from older versions of the launcher losing their custom names.
- Automatically heals and cleans up corrupted server history entries on startup to prevent UI crashes.
- Fixed watchlist connection shortcuts to fall back to direct join if a watched server isn't found in the browser.
- Faster, Smoother Launcher Startup:
- Rewrote directory scanners (such as looking for Steam and Workshop folders) to run in the background, keeping the window responsive during launch.
- Fixed an interface lag issue when copying crash logs.
- Mod & Dependency Troubleshooting:
- Fixed the mod list refresh button getting stuck on "Fetching..." when offline.
- Prevented duplicate mod updates from running in parallel in the background.
- Shows "Sync failed" instead of getting stuck on "Syncing..." if a mod subscription fails.
- Fixed a calculation issue in the mod dependency scanner that could double-count missing items.
- Added strict mod ID filters to keep background services stable.
- Updates & General Stability:
- Single-instance enforcement: The launcher now ensures only one window is open at a time, preventing conflicts.
- Safe-loading bootstrap: If a launcher component fails to load, the remaining modules will still load safely instead of crashing the entire app.
- Added a timeout to update checks so the launcher won't freeze if GitHub is offline or slow.
- Added helper notifications if update downloads fail, allowing you to easily retry.
- Fixed safety boundaries for DXVK shader compiler settings, disk space queries, and GameMode triggers to prevent crashes.
1.4.4
Quick Install / Update
Run this command in your terminal to automatically detect your system and install / update the latest version (.deb, .rpm, or AppImage):
curl -sSL https://raw.githubusercontent.com/dawiisss/DzLinux/main/install.sh | bashAdded
- Added a "Virtual List (Endless Scrolling)" option in settings to provide a progressive infinite scrolling experience, eliminating the need to click through pagination buttons.
- Added a "Subscribe All" button to the expanded server row header, allowing users to queue all missing mods for a server in a single click.
Changed
- Streamlined the design of the mod chips in the expanded row by removing redundant "Not Subscribed" text and numeric Mod IDs for a cleaner look.
- Mod chips now automatically transform into a fully installed state (green checkmark) in the DOM the moment a Steamworks download completes, eliminating the need for a manual refresh.
- Completely decoupled the background ping loop from the table rendering engine and implemented in-place DOM sliding, instantly eliminating UI freezing and frame-drops when running massive chunk sizes (100+) in Virtual List mode.
- Renamed the "Server List Page Size" settings label to "Servers Per Page / Scroll Load" to accurately reflect its dual functionality for both pagination and virtual chunk sizing.
- Removed the active background polling interval for updates. The application now exclusively checks for updates on startup or when manually triggered by the user via the "Check for Updates" button to reduce background network overhead.
- Expanded server rows now automatically collapse when they are scrolled out of the visible viewport, preventing layout jitter and keeping the DOM clean.
- Standardized the pagination text string to sentence case consistently across all renderer events to fix uppercase flickering.
Fixed
- Fixed a bug where clicking the Refresh button inside the expanded mod grid would leave the button stuck on "Fetching...". The mod grid now reconstructs itself in-place when a network fetch completes.
- Fixed a bug where the custom 'Servers Per Page' setting would revert to the default 50 items when the application restarted. The rendering engine now properly synchronizes pagination boundaries directly from local configuration cache during the bootstrap sequence.
1.4.3
Added
- Player name has been added to the launch parameters it can now be set from the Settings screen on the Launch Presets card
Changed
- Launch Presets tab switched with Storage Directories to make it more visible