mirror of
https://github.com/aclist/dztui.git
synced 2026-10-25 20:22:37 +01:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
84c75173a0 | ||
|
|
7528ab6fa3 | ||
|
|
fa43459a78 | ||
|
|
252f07cbec | ||
|
|
a0f610ead7 | ||
|
|
ca4bcfc1a5 | ||
|
|
ac4892d4f0 | ||
|
|
240b660923 | ||
|
|
150dfbca72 | ||
|
|
4b78114174 | ||
|
|
d1bde9901d | ||
|
|
c5eba364d9 | ||
|
|
5460b53c26 | ||
|
|
99301b3312 | ||
|
|
8d30af9dee | ||
|
|
8a8109b7df | ||
|
|
e4eaf25c8f | ||
|
|
0daf6089b9 | ||
|
|
7e4197cdbc | ||
|
|
c0f9d8a508 | ||
|
|
2da2b19001 | ||
|
|
62936fa7b7 | ||
|
|
e9fecc7fb7 | ||
|
|
11c29112c2 | ||
|
|
317f60eddd | ||
|
|
9fbe5029e1 | ||
|
|
896802cd6f |
No files matched your search
+372
-157
@@ -1,22 +1,38 @@
|
||||
# Changelog
|
||||
|
||||
## [6.0.5] 2026-05-17
|
||||
## [6.0.6-beta.1] 2026-05-17
|
||||
## Changed
|
||||
- Update symlink hash logic to align with DZGUI 7 beta
|
||||
- Update A2S helper to latest commit
|
||||
|
||||
## [6.0.4] 2026-04-13
|
||||
## [6.0.5-beta.2] 2026-04-17
|
||||
## Changed
|
||||
- During server connection attempts, only download mods local to specific server
|
||||
|
||||
## [6.0.5-beta.1] 2026-04-13
|
||||
## Fixed
|
||||
- Update A2S module checksums to support servers with missing description field
|
||||
## Changed
|
||||
- Bump version to reflect hotfixes on stable branch
|
||||
|
||||
## [6.0.3] 2026-04-12
|
||||
## [6.0.2-beta.5] 2026-04-12
|
||||
## Fixed
|
||||
- Use GLibUnix namespace where available when setting up SIGINT callback
|
||||
- Use conditional logic when testing GLibUnix namespaces
|
||||
|
||||
## [6.0.2] 2026-01-26
|
||||
## [6.0.2-beta.4] 2026-04-10
|
||||
## Fixed
|
||||
- Use GLibUnix namespace when setting up SIGINT handling
|
||||
|
||||
## [6.0.2-beta.3] 2026-01-26
|
||||
## Fixed
|
||||
- Explicitly use Python 3.13 when calling subprocesses
|
||||
- Raise error correctly from module
|
||||
|
||||
## [6.0.2-beta.2] 2026-01-18
|
||||
## Fixed
|
||||
- Helpers not being downloaded (uncommented boilerplate)
|
||||
|
||||
## [6.0.2-beta.1] 2026-01-18
|
||||
## Fixed
|
||||
- Do not spawn dialogs from inside of thread when fetching prereqs
|
||||
## Changed
|
||||
- Optimize time complexity of startup checks
|
||||
@@ -24,57 +40,102 @@
|
||||
- Rename some internal functions
|
||||
- Wrap entire startup process in dialog
|
||||
|
||||
## [6.0.1] 2026-01-16
|
||||
## [6.0.1-beta.1] 2026-01-16
|
||||
## Fixed
|
||||
- Explicitly use Python 3.13 when calling subprocesses
|
||||
|
||||
## [6.0.0] 2026-01-14
|
||||
## [6.0.0-beta.20] 2026-01-14
|
||||
## Fixed
|
||||
- Write cache file after wiping
|
||||
|
||||
## [6.0.0-beta.19] 2026-01-14
|
||||
## Fixed
|
||||
- Steam Deck compatible script path expansion
|
||||
|
||||
## [6.0.0-beta.18] 2026-01-14
|
||||
## Fixed
|
||||
- Update UI checksums
|
||||
|
||||
## [6.0.0-beta.17] 2026-01-14
|
||||
## Added
|
||||
- Support DayZ Experimental
|
||||
- Ping display on server tables
|
||||
- Save descriptive text notes on a per-server basis
|
||||
- Speed up load time and navigation of server tables
|
||||
- More robust threading and cache system when filtering servers
|
||||
- Show additional DayZ client information in Options menu
|
||||
- Warn user of DayZ client version mismatches
|
||||
- Support clickable hyperlinks in dialogs
|
||||
- Rich server metadata details dialog (right-click on server table)
|
||||
- Filter by modded servers
|
||||
- Breadcrumbs showing current menu context
|
||||
- Dedicated changelog page
|
||||
- Dedicated keybindings page
|
||||
- Dedicated settings page ("Options")
|
||||
- Support sandboxed version of Flatpak
|
||||
- Vim-style navigation keybindings
|
||||
- Added "Return to main menu" button to dialog windows when failing to load server table
|
||||
- Dynamic context menus for modded servers
|
||||
- Additional keybindings for new filter toggles
|
||||
- If a server is locked, prompt user when connecting
|
||||
- Internal flag to allow distro-packaged releases to disable in-app updates
|
||||
- Pre-boot checks to test whether script was invoked directly
|
||||
- Commandline usage help text (GaryBlackbourne)
|
||||
- More descriptive help dialogs when initial dependencies are missing
|
||||
|
||||
## [6.0.0-beta.16] 2026-01-04
|
||||
## Fixed
|
||||
- Regression introduced in previous hotfix
|
||||
|
||||
## [6.0.0-beta.15] 2025-12-27
|
||||
## Fixed
|
||||
- Path discovery during first-time setup when parsing filepaths with whitespaces
|
||||
- First-time setup dialog continuously triggering when DayZ install path had whitespaces in it
|
||||
|
||||
## [6.0.0-beta.14] 2025-12-09
|
||||
## Fixed
|
||||
- Dialogs with newlines breaking output in log table
|
||||
|
||||
## [6.0.0-beta.13] 2025-11-29
|
||||
## Fixed
|
||||
- Server filter panel not being hidden when entering other page contexts
|
||||
- Path to remote changelog being constructed incorrectly
|
||||
|
||||
## [6.0.0-beta.12] 2025-11-14
|
||||
## Changed
|
||||
- Require Python 3.13
|
||||
## Fixed
|
||||
- Normalize beta version
|
||||
|
||||
## [6.0.0-beta.11] 2025-11-13
|
||||
## Added
|
||||
- Support sandboxed flatpak
|
||||
|
||||
## Changed
|
||||
- Preferred client from radio toggle to combobox
|
||||
|
||||
## Fixed
|
||||
- Config file erroneously getting updated when populating settings menu
|
||||
|
||||
## [6.0.0-beta.10] 2025-11-10
|
||||
## Fixed
|
||||
- Python 3.14 error in finally block
|
||||
- Require Python version between 3.11 and 3.12
|
||||
|
||||
## [6.0.0-beta.9] 2025-11-05
|
||||
## Fixed
|
||||
- UI not being constructed correctly if CHANGELOG.md was missing
|
||||
|
||||
## [6.0.0-beta.8] 2025-11-04
|
||||
## Added
|
||||
- Internal flag to allow distribution packaged releases to disable in-app updates
|
||||
- Pre-boot check to test whether script was invoked directly
|
||||
- Commandline usage help text
|
||||
|
||||
## Fixed
|
||||
- ESC key destroying wait dialogs while a thread is pending
|
||||
- Tooltip signals being erroneously drawn on main menu
|
||||
- Leaky variable name in dialog titles
|
||||
- Prevent extraneous signals from propagating when column width is adjusted
|
||||
- Script failing to start when remote endpoints are unavailable (GaryBlackbourne)
|
||||
- Key stickiness when quickly navigating through entries in tables
|
||||
- Servers returning malformed A2S_INFO blocking server browser from loading
|
||||
- Normalized buttons in dialogs and restored proper padding
|
||||
- GTK errors being emitted to stdout when inserting debug table
|
||||
- Entry dialog sensitivity when validating API keys
|
||||
- Additional validation on entry dialogs to prevent submitting empty text
|
||||
- Suppress errors during pre-boot checks when mods are not installed
|
||||
- Centered filter checkboxes within panel
|
||||
- Do not pop unhighlight/select stale buttons if no stale mods exist
|
||||
- Improved keybinding interaction with side panels
|
||||
- Suppress typeahead search in mod dialogs
|
||||
- Do not trigger global API cooldown if no LAN/favorite servers are found
|
||||
- Fix table column expansion in server mod dialogs
|
||||
- Missing parameters when closing application via window decorations
|
||||
- Statusbar contents not updating on certain pages
|
||||
- Prevent debug button from activating when in certain input fields
|
||||
- Window size not updating correctly when unmaximizing window after changing "fullscreen at boot" setting
|
||||
- Branch toggle signal being emitted when entering Options menu from other contexts
|
||||
|
||||
## Changed
|
||||
- Optimize time complexity of pre-boot checks (GaryBlackbourne)
|
||||
- Moved location of notes file
|
||||
- Rewrote distance calculation module (GaryBlackbourne)
|
||||
|
||||
## [6.0.0-beta.7] 2025-09-20
|
||||
## Added
|
||||
- Users can save text notes to describe servers
|
||||
|
||||
## Changed
|
||||
- State file serialization methods
|
||||
|
||||
## [6.0.0-beta.6] 2025-09-12
|
||||
## Added
|
||||
- Support DayZ Experimental
|
||||
- Show additional client information in Options menu
|
||||
- Warn user of client version mismatches
|
||||
- Support clickable hyperlinks
|
||||
|
||||
## Fixed
|
||||
- Mods rarely not appearing in local mod list if download completed too quickly
|
||||
- Statusbar not updating when clicking a row after spamming keyboard input
|
||||
- Extraneous logs being generated when subscribing to mods
|
||||
@@ -82,188 +143,342 @@
|
||||
- Newline terminators in history file
|
||||
- Floating point number calculation
|
||||
- Window resizing too small if no prior resolution was set
|
||||
- ESC key destroying wait dialogs while a thread is pending
|
||||
- Tooltip signals being erroneously emitted on main menu
|
||||
- UI not being constructed correctly if CHANGELOG.md was missing
|
||||
- Config file erroneously getting updated when populating settings menu
|
||||
- Leaky variable name in dialog titles
|
||||
- Prevent extraneous signals from propagating when column width is adjusted
|
||||
- Server filter panel not being hidden when entering other page contexts
|
||||
- Path to remote changelog being constructed incorrectly
|
||||
- Dialogs with newlines breaking output in log table
|
||||
- Path discovery during first-time setup when parsing filepaths with whitespaces
|
||||
- First-time setup dialog continuously triggering when DayZ install path had whitespaces in it
|
||||
|
||||
## [6.0.0-beta.5] 2025-08-20
|
||||
## Fixed
|
||||
- Servers returning malformed A2S_INFO blocking server browser from loading
|
||||
|
||||
## [6.0.0-beta.4] 2025-08-13
|
||||
## Fixed
|
||||
- Branch toggle signal being emitted when entering Options menu from other contexts
|
||||
|
||||
## [6.0.0-beta.3] 2025-08-08
|
||||
## Added
|
||||
- Additional server metadata to details dialog
|
||||
- Prompt user when connecting if a server is locked
|
||||
- Dedicated settings page ("Options")
|
||||
|
||||
## Fixed
|
||||
- Statusbar contents not updating on certain pages
|
||||
- Breadcrumbs not updating when returning from keybindings page
|
||||
- Wrap long descriptions in server details
|
||||
- Prevent debug button from activating when in certain input fields
|
||||
- Window size not updating correctly when unmaximizing window after changing "fullscreen at boot" setting
|
||||
|
||||
## Dropped
|
||||
- Extraneous information from right statusbar
|
||||
|
||||
## [6.0.0-beta.2] 2025-07-29
|
||||
## Fixed
|
||||
- Missing parameters when closing application via window decorations
|
||||
|
||||
## [6.0.0-beta.1] 2025-07-29
|
||||
## Added
|
||||
- Ping column to server browsing contexts
|
||||
- Server details dialog to server browsing contexts
|
||||
- Filter by modded servers
|
||||
- Breadcrumbs showing current menu context to top of window
|
||||
- Speed up load time and navigation of server tables
|
||||
- More robust threading and cache system when filtering servers
|
||||
- Dedicated changelog page
|
||||
- Dedicated keybindings page
|
||||
- Vim-style navigation keybindings
|
||||
- Additional validation on entry dialogs to prevent submitting empty text
|
||||
- Added "Return to main menu" button to dialog windows when failing to load server table
|
||||
- Dynamic context menus for modded servers
|
||||
- Additional keybindings for filter toggles
|
||||
|
||||
## Fixed
|
||||
- Entry dialog sensitivity when validating API keys
|
||||
- Normalized buttons in dialogs and restored proper padding
|
||||
- GTK errors being emitted to stdout when inserting debug table
|
||||
- Suppress errors during pre-boot checks when mods are not installed
|
||||
- Centered filter checkboxes within panel
|
||||
- Do not pop unhighlight/select stale buttons if no stale mods exist
|
||||
- Improved keybinding interaction with side panels
|
||||
- Key stickiness when quickly navigating through entries in tables
|
||||
- Suppress typeahead search in mod dialogs
|
||||
- Do not trigger global API cooldown if no LAN/favorite servers are found
|
||||
- Fix table column expansion in server mod dialogs
|
||||
|
||||
## Changed
|
||||
- Require Python 3.13
|
||||
- Reduced global API cooldown from 60s to 30s
|
||||
- Clarify dialog messages when DayZ path could not be found
|
||||
- Auto-focus first item when opening context menus
|
||||
- Opacity setting on side buttons when in a different context
|
||||
- Refactored BM API key validation to account for new key format
|
||||
- State file serialization methods
|
||||
- Optimize time complexity of pre-boot checks (GaryBlackbourne)
|
||||
- Rewrote distance calculation module (GaryBlackbourne)
|
||||
- Changed preferred client setting from radio toggle to combobox
|
||||
|
||||
## Dropped
|
||||
- Ping readout in statusbar
|
||||
- Extraneous information from right statusbar
|
||||
|
||||
## [5.8.3] 2026-01-04
|
||||
## Fixed
|
||||
- Normalize checksum numbers and dates
|
||||
|
||||
## [5.8.2] 2026-01-04
|
||||
## Fixed
|
||||
- Fix regression in symlink routine introduced by previous hotfix
|
||||
|
||||
## [5.8.1] 2025-12-27
|
||||
## Fixed
|
||||
- Path discovery during first-time setup when parsing filepaths with whitespaces
|
||||
- First-time setup dialog continuously triggering when DayZ install path had whitespaces in it
|
||||
|
||||
## [5.8.0] 2025-07-06
|
||||
## [5.8.0-beta.2] 2025-07-06
|
||||
## Added
|
||||
- Filter servers by official/unofficial status
|
||||
- Automatically fetch geolocation records
|
||||
## Changed
|
||||
- Updated internal versioning of helper files
|
||||
|
||||
## [5.8.0-beta.1] 2025-06-05
|
||||
## Added
|
||||
- Automatically fetch geolocation records
|
||||
## Fixed
|
||||
- Corrected erroneous 2024 date in prior changelog entries
|
||||
|
||||
## [5.7.0] 2025-04-17
|
||||
## Added
|
||||
- Save application dimensions when quitting and restore on subsequent boot
|
||||
## Fixed
|
||||
- Issues with the window exceeding the bounds of the screen when displaying some table contexts
|
||||
## [5.7.1-beta.1] 2025-04-17
|
||||
## Changed
|
||||
- More direct server ping query method that should return marginally more accurate times
|
||||
- Updated geolocation records
|
||||
|
||||
## [5.6.7] 2025-04-04
|
||||
## [5.7.0-beta.13] 2025-04-17
|
||||
## Fixed
|
||||
- Updated checksum for UI helper file
|
||||
|
||||
## [5.7.0-beta.12] 2025-04-04
|
||||
## Dropped
|
||||
- Removed extraneous pre-boot API checks that could cause error messages to be printed if the user had not set up an API key yet
|
||||
|
||||
## [5.6.6] 2025-03-16
|
||||
## Changed
|
||||
- Update IP database records for 2025-03
|
||||
## [5.7.0-beta.11] 2025-03-20
|
||||
## Fixed
|
||||
- Reduce startup time when testing remote APIs
|
||||
|
||||
## [5.6.5] 2025-03-04
|
||||
## [5.7.0-beta.10] 2025-03-15
|
||||
## Added
|
||||
- Restore application size on subsequent startup
|
||||
## Fixed
|
||||
- Grid scaling causes table to exceeds bounds of display viewport
|
||||
- Window exceeds taskbar on Steam Deck
|
||||
- Reduce possibility of timeouts when pinging servers
|
||||
## Changed
|
||||
- Packed filter checkbox buttons into a 3x3 grid
|
||||
- Updated IP database to 2025-03 records
|
||||
|
||||
## [5.7.0-beta.9] 2025-03-04
|
||||
## Fixed
|
||||
- Livonia server results being dropped from batch queries
|
||||
|
||||
## [5.6.4] 2025-02-10
|
||||
### Changed
|
||||
## [5.7.0-beta.8] 2025-02-10
|
||||
## Changed
|
||||
- Drop launch flag and check for invocation through Steam automatically
|
||||
|
||||
## [5.6.3] 2025-02-09
|
||||
### Changed
|
||||
## [5.7.0-beta.7] 2025-02-09
|
||||
## Changed
|
||||
- Update IP database records for 2025-02
|
||||
|
||||
## [5.6.2] 2025-01-22
|
||||
### Fixed
|
||||
- Resolve regression introduced with IP resolution feature in 5.6.0 (restores functionality of right-click action: Add to My Servers)
|
||||
## [5.7.0-beta.6] 2025-01-10
|
||||
## Fixed
|
||||
- Resolve regression introduced with IP resolution feature in 13c6813
|
||||
|
||||
## [5.6.1] 2025-01-10
|
||||
### Fixed
|
||||
- Add fallback support for jq 1.6
|
||||
## [5.7.0-beta.5] 2025-01-10
|
||||
## Changed
|
||||
- Stricter redacting of usernames (again)
|
||||
|
||||
## [5.6.0] 2025-01-06
|
||||
### Added
|
||||
- Application header bar and controls
|
||||
- Menu context subtitle in header bar
|
||||
- Bulk delete mods (via 'List installed mods' list). Not compatible with Manual Mod install mode
|
||||
- Highlight stale mods in mods list
|
||||
- Added --steam launch parameter
|
||||
- Open Steam workshop subscriptions dialog when switching from Manual to Auto mode
|
||||
- Hover tooltips to most buttons
|
||||
- Add in-app documentation link to Codeberg mirror
|
||||
- Additional logging
|
||||
### Fixed
|
||||
- Avoid sudo escalation if system map count is sufficient (jiriks74)
|
||||
- Duplicate dialog title on Steam Deck
|
||||
- Resolve remote IP when saving records for game servers with multiple hosts
|
||||
- More performant symlink traversal when checking for legacy links
|
||||
- Only iterate on missing symlinks at boot (400% performance uplift)
|
||||
- Fix for server list truncation causing some servers to not appear in results
|
||||
- Empty dialog popups if user manually deletes local mods while application is running
|
||||
- Update statusbar when removing servers from list/repopulating
|
||||
- Abort DayZ path discovery if Steam files are not synched
|
||||
- Race condition when checking for installed mods
|
||||
- Favorite server message not updating correctly
|
||||
- Improved handling for cases where there are no locally installed mods
|
||||
- Set up mod symlinks at boot, rather than only on server connect
|
||||
- Prevent context menus from opening when table is empty
|
||||
- When reloading table in-place, prevent duplicate panel elements from being added if already present
|
||||
- Clean up local mod signatures from versions file when deleting mods
|
||||
- Focus first row when opening mods list
|
||||
## [5.7.0-beta.4] 2025-01-10
|
||||
## Fixed
|
||||
- Clerical hotfix
|
||||
|
||||
## [5.7.0-beta.3] 2025-01-10
|
||||
## Changed
|
||||
- Support legacy jq syntax for Ubuntu variants
|
||||
|
||||
## [5.7.0-beta.2] 2025-01-07
|
||||
## Fixed
|
||||
- Stricter redacting of usernames
|
||||
- Omit nested directories when traversing symlinks
|
||||
|
||||
## [5.7.0-beta.1] 2025-01-07
|
||||
### Changed
|
||||
- Redact usernames in log files
|
||||
- Normalize version number
|
||||
|
||||
## [5.6.0-beta.21] 2025-01-06
|
||||
### Added
|
||||
- Add in-app documentation link to Codeberg mirror
|
||||
- Hover tooltips to most buttons
|
||||
### Fixed
|
||||
- Prevent ArrowUp/ArrowDown input when inside keyword field
|
||||
- Admonish user to restart Steam in error dialog if DayZ path could not be found
|
||||
- Refactor control flow for more robust contextual parsing
|
||||
- Stop sending modal dialog hints to outer window
|
||||
- Clean up signal emission
|
||||
- Clarify some error messages and normalize text formatting
|
||||
### Changed
|
||||
- Update forum URL
|
||||
- Reword Help section links to include destination
|
||||
- Update README.md
|
||||
- Update IP database to 2025-01
|
||||
- Reduce IP database size by 50%
|
||||
- Update documentation to 5.6.x standard
|
||||
### Dropped
|
||||
- Hall of Fame section from button links, to be moved inside documentation
|
||||
- Unused imports
|
||||
- Removed temporary mod ID output in debug logs
|
||||
- Removed Hall of Fame section from button links, moved inside documentation
|
||||
- Remove unused imports
|
||||
|
||||
## [5.5.3] 2024-12-13
|
||||
## [5.6.0-beta.20] 2024-12-23
|
||||
### Added
|
||||
- Output real and resolved mod ids to logs (temporary)
|
||||
- Added -steam launch parameter
|
||||
### Fixed
|
||||
- Only iterate on missing symlinks
|
||||
- Move logging up
|
||||
|
||||
## [5.6.0-beta.19] 2024-12-18
|
||||
### Added
|
||||
- Redact usernames in log files
|
||||
### Fixed
|
||||
- More performant symlink traversal when checking for legacy links
|
||||
|
||||
## [5.6.0-beta.18] 2024-12-14
|
||||
### Added
|
||||
- Open Steam workshop subscriptions dialog
|
||||
- Additional logging
|
||||
### Fixed
|
||||
- Empty dialog popups if user manually deletes local mods while application is running
|
||||
- Abort DayZ path discovery if VDF if Steam files are not synched
|
||||
- Avoid sudo escalation if system map count is sufficient (jiriks74)
|
||||
### Changed
|
||||
- Admonish user to restart Steam in error dialog if DayZ path could not be found
|
||||
|
||||
## [5.6.0-beta.17] 2024-12-14
|
||||
### Added
|
||||
- Additional logging
|
||||
|
||||
## [5.6.0-beta.16] 2024-12-13
|
||||
### Fixed
|
||||
- Add remote resource health checks before downloading updates
|
||||
### Added
|
||||
- Add fallback repository
|
||||
|
||||
## [5.5.1] 2024-12-03
|
||||
## [5.6.0-beta.11] 2024-12-07
|
||||
### Fixed
|
||||
- Support localized decimal separators when parsing installed mod sizes
|
||||
- Add missing function definition
|
||||
|
||||
## [5.5.0] 2024-11-10
|
||||
## [5.6.0-beta.10] 2024-12-04
|
||||
### Fixed
|
||||
- Untoggle highlight button when repopulating mod list
|
||||
- Resolve remote IP when saving records for game servers with multiple hosts
|
||||
- Update statusbar when removing servers from list/repopulating
|
||||
### Added:
|
||||
- "Select stale" button to bulk select mods marked as obsolete
|
||||
|
||||
## [5.6.0-beta.9] 2024-12-03
|
||||
### Fixed
|
||||
- Normalize user locale when parsing floats
|
||||
|
||||
## [5.6.0-beta.8] 2024-11-28
|
||||
### Fixed
|
||||
- Normalize user locale when parsing floats
|
||||
|
||||
## [5.6.0-beta.7] 2024-11-28
|
||||
### Changed
|
||||
- Add additional logging when fetching installed mods
|
||||
|
||||
## [5.6.0-beta.6] 2024-11-28
|
||||
### Fixed
|
||||
- Race condition when checking for installed mods
|
||||
|
||||
## [5.6.0-beta.5] 2024-11-21
|
||||
### Added
|
||||
- Support servers running DLC content (fixes Frostline servers)
|
||||
- Expose a toggle setting for whether to launch the application in fullscreen
|
||||
- Text autocompletion in maps search field (partial search)
|
||||
- Add disk space warning to popup dialog when downloading mods
|
||||
- Highlight stale mods in mods list
|
||||
### Fixed
|
||||
- Duplicate dialog title on Steam Deck
|
||||
|
||||
## [5.6.0-beta.4] 2024-11-20
|
||||
### Added
|
||||
- Application header bar and controls
|
||||
- Menu context subtitle in header bar
|
||||
### Changed
|
||||
- Refactor control flow for more robust contextual parsing
|
||||
- Stop sending modal dialog hints to outer window
|
||||
### Fixed
|
||||
- Favorite server message not updating correctly
|
||||
|
||||
## [5.6.0-beta.3] 2024-11-18
|
||||
### Fixed
|
||||
- Improved handling for cases where there are no locally installed mods
|
||||
- Set up mod symlinks at boot, rather than only on server connect
|
||||
- Prevent context menus from opening when table is empty
|
||||
- When reloading table in-place, prevent duplicate panel elements from being added if already present
|
||||
- Clean up signal emission
|
||||
|
||||
## [5.6.0-beta.2] 2024-11-15
|
||||
### Fixed
|
||||
- Clean up local mod signatures from versions file when deleting mods
|
||||
|
||||
## [5.6.0-beta.1] 2024-11-12
|
||||
### Added
|
||||
- Bulk delete mods (via 'List installed mods' list). Not compatible with Manual Mod install mode
|
||||
### Fixed
|
||||
- Fix for server list truncation causing some servers to not appear in results
|
||||
- Suppress signal emission when switching menu contexts
|
||||
- Focus first row when opening mods list
|
||||
### Changed
|
||||
- Clarify some error messages and normalize text formatting
|
||||
|
||||
## [5.5.0-beta.5] 2024-11-03
|
||||
### Changed
|
||||
- Use updated A2S_RULES logic
|
||||
### Fixed
|
||||
- Servers in saved servers list would populate context menu with same option when right-clicking in server browser
|
||||
|
||||
## [5.5.0-beta.4] 2024-10-31
|
||||
### Added
|
||||
- Expose a toggle setting for whether to launch the application in fullscreen
|
||||
### Fixed
|
||||
- Enable adding/removing servers to/from My Saved Servers when in Recent Servers context
|
||||
|
||||
## [5.5.0-beta.3] 2024-10-31
|
||||
### Fixed
|
||||
- Prevent maps combobox from duplicating contents
|
||||
|
||||
## [5.5.0-beta.2] 2024-10-31
|
||||
### Fixed
|
||||
- Restore keyboard input to keyword entry field
|
||||
### Changed
|
||||
|
||||
## [5.5.0-beta.1] 2024-10-30
|
||||
### Added
|
||||
- Support servers running DLC content (fixes Frostline servers)
|
||||
- Text autocompletion in maps search field
|
||||
- Add disk space warning to popup dialog
|
||||
### Fixed
|
||||
- Abort fallback query method if DLC is required
|
||||
|
||||
## [5.4.2] 2024-10-05
|
||||
## [5.4.2-beta.1] 2024-10-05
|
||||
### Fixed
|
||||
- Sanitize third-party API IDs to remove UGC collisions
|
||||
|
||||
## [5.4.1] 2024-09-25
|
||||
## [5.4.1-beta.2] 2024-09-12
|
||||
### Fixed
|
||||
- Use fallback logic for modlist queries when user traverses networks
|
||||
|
||||
## [5.4.1-beta.2] 2024-09-10
|
||||
### Fixed
|
||||
- Fix signal handling control flow for checkbox toggles
|
||||
|
||||
## [5.4.1-beta.1] 2024-09-10
|
||||
### Added
|
||||
- Pre-boot validation check for users with self-compiled version of jq
|
||||
### Fixed
|
||||
- Use fallback logic for modlist queries when user traverses networks
|
||||
- Fix signal handling control flow for checkbox toggles
|
||||
- When reloading the server browser, the map combobox selection would revert to the last selected map instead of All Maps
|
||||
- Server filter toggle signals were accessible from the main menu when switching between menu contexts
|
||||
- Global cooldown dialog could sometimes block filter toggles after cooldown reset
|
||||
- Normalized minor version number due to a previous clerical error
|
||||
|
||||
## [5.4.0] 2024-08-27
|
||||
## [5.4.0-beta.5] 2024-08-27
|
||||
### Added
|
||||
- Scan local area network for DayZ servers
|
||||
- Freedesktop application icons for system taskbar, tray, and other dialogs
|
||||
- Emit CPU model name when exporting system debug log
|
||||
### Fixed
|
||||
- Errors being printed to the console when Exit button was explicitly clicked
|
||||
|
||||
## [5.4.0-beta.4] 2024-08-21
|
||||
### Added
|
||||
- Emit CPU model name when exporting system debug log
|
||||
### Fixed
|
||||
- Detect Steam Deck OLED APU variant during initial setup
|
||||
- Encapsulate player names correctly so that names with whitespace in them are supported
|
||||
|
||||
## [5.4.0-beta.3] 2024-08-04
|
||||
### Added
|
||||
- Scan local area network for DayZ servers
|
||||
|
||||
## [5.4.0-beta.2] 2024-08-03
|
||||
### Fixed
|
||||
- Clerical hotfix for previous player names fix
|
||||
- Test if DayZ directory is empty at startup, implying that the game was moved to a new library collection
|
||||
- Report WM_CLASS name to the window manager
|
||||
|
||||
## [5.4.0-beta.1] 2024-07-16
|
||||
### Fixed
|
||||
- Encapsulate player names correctly so that names with whitespace in them are supported
|
||||
|
||||
## [5.3.2] 2024-07-02
|
||||
### Fixed
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
set -o pipefail
|
||||
|
||||
src_path="$(readlink -e "$0")"
|
||||
version=6.0.5
|
||||
version=6.0.6-beta.1
|
||||
|
||||
#CONSTANTS
|
||||
aid=221100
|
||||
@@ -508,7 +508,7 @@ check_availability() {
|
||||
return 1
|
||||
fi
|
||||
local url=$1
|
||||
local timeout_sec="2"
|
||||
local timeout_sec="1"
|
||||
if [[ $2 ]]; then
|
||||
timeout_sec=$2
|
||||
fi
|
||||
@@ -629,7 +629,7 @@ fetch_helpers_by_sum(){
|
||||
[[ -f "$config_file" ]] && source "$config_file"
|
||||
declare -A sums
|
||||
sums=(
|
||||
["funcs"]="cff21e5ecfbbf72951f9f772b46024c9"
|
||||
["funcs"]="1cd26343cd68a5382e3377a9757497fa"
|
||||
["query_v2.py"]="55d339ba02512ac69de288eb3be41067"
|
||||
["servers.py"]="ed442c3aecf33f777d59dcf53650d263"
|
||||
["ui.py"]="cf52a3d5883afe02a013d8673df494fa"
|
||||
|
||||
+134
-145
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -o pipefail
|
||||
version="6.0.5"
|
||||
version="6.0.5-beta.2"
|
||||
|
||||
#CONSTANTS
|
||||
aid=221100
|
||||
@@ -690,6 +690,7 @@ toggle(){
|
||||
auto_install="1"
|
||||
else
|
||||
auto_install=""
|
||||
rm "$versions_file"
|
||||
fi
|
||||
;;
|
||||
Toggle[[:space:]]debug[[:space:]]mode)
|
||||
@@ -1086,41 +1087,42 @@ try_connect(){
|
||||
local appid="$2"
|
||||
local binary="$3"
|
||||
|
||||
local ip=$(<<< $record awk -F: '{print $1}')
|
||||
local gameport=$(<<< $record awk -F: '{print $2}')
|
||||
local qport=$(<<< $record awk -F: '{print $3}')
|
||||
IFS=":" read -ra address <<< "$record"
|
||||
local ip
|
||||
local gameport
|
||||
local qport
|
||||
ip=${address[0]}
|
||||
gameport=${address[1]}
|
||||
qport=${address[2]}
|
||||
|
||||
[[ $appid -eq $exp ]] && echo "$binary" > $_cache_binary
|
||||
[[ $appid -eq $exp ]] && echo "$binary" > "$_cache_binary"
|
||||
|
||||
local remote_mods
|
||||
remote_mods=$(a2s $ip $qport rules)
|
||||
remote_mods=$(a2s "$ip" "$qport" rules)
|
||||
if [[ $? -eq 1 ]]; then
|
||||
printf "Failed to fetch server modlist, possibly timed out"
|
||||
return 1
|
||||
fi
|
||||
logger INFO "Server returned modlist: $(<<< $remote_mods tr '\n' ' ')"
|
||||
local sanitized_mods=$(query_defunct "$remote_mods")
|
||||
local diff=$(compare "$sanitized_mods")
|
||||
logger INFO "Server returned modlist: $(<<< "$remote_mods" tr '\n' ' ')"
|
||||
|
||||
local sanitized_mods
|
||||
sanitized_mods=$(query_defunct "$remote_mods")
|
||||
|
||||
logger INFO "Connection attempt for $ip:$qport"
|
||||
update_history "$record"
|
||||
|
||||
if [[ -n $auto_install ]]; then
|
||||
logger INFO "Merging modlists"
|
||||
diff=$(merge_modlists "$diff")
|
||||
diff=$(query_defunct "$diff")
|
||||
fi
|
||||
if [[ -n $diff ]]; then
|
||||
if [[ $(check_architecture) -eq 1 ]] && [[ $(test_display_mode) == "gm" ]]; then
|
||||
printf "Use Desktop Mode to download mods on Steam Deck"
|
||||
return 1
|
||||
fi
|
||||
case $auto_install in
|
||||
"") manual_mod_install "$ip" "$gameport" "$diff" "$sanitized_mods" "" "$appid";;
|
||||
1|2) manual_mod_install "$ip" "$gameport" "$diff" "$sanitized_mods" "auto" "$appid" ;;
|
||||
esac
|
||||
else
|
||||
case $auto_install in
|
||||
"") install_mods "$sanitized_mods" "manual" ;;
|
||||
1|2) install_mods "$sanitized_mods" "auto" ;;
|
||||
esac
|
||||
|
||||
# NOTE: clean diff indicates that all requisite mods were downloaded
|
||||
diff=$(compare "$sanitized_mods")
|
||||
if [[ -z $diff ]]; then
|
||||
launch "$ip" "$gameport" "$sanitized_mods" "$appid"
|
||||
else
|
||||
printf "User aborted download process, or some mods may have failed to download. Try connecting again to resync."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
check_architecture(){
|
||||
@@ -1136,13 +1138,15 @@ force_update(){
|
||||
printf "Only available when mod auto-install is ON"
|
||||
return 1
|
||||
fi
|
||||
# NOTE: forcibly regenerate signatures by removing file
|
||||
rm "$versions_file"
|
||||
local update=$(check_timestamps)
|
||||
manual_mod_install "null" "null" "$update" "null" "force" "null"
|
||||
local mods
|
||||
mods=$(ls -1 "$workshop_dir")
|
||||
install_mods "$mods" "force"
|
||||
echo "Finished requesting mod updates."
|
||||
return 0
|
||||
}
|
||||
get_local_stamps(){
|
||||
get_timestamps(){
|
||||
readarray -t modlist < <(printf "%s\n" "$@")
|
||||
local max="${#modlist[@]}"
|
||||
_concat(){
|
||||
@@ -1167,67 +1171,6 @@ update_stamps(){
|
||||
printf "%s\n" "${stamps[$i]}" >> $versions_file
|
||||
done
|
||||
}
|
||||
check_timestamps(){
|
||||
readarray -t local_modlist < <(ls -1 $workshop_dir)
|
||||
local max=${#local_modlist[@]}
|
||||
logger INFO "Local mod count: $max"
|
||||
[[ $max -eq 0 ]] && return 1
|
||||
local local_stamps=$(get_local_stamps "${local_modlist[@]}")
|
||||
if [[ -z $local_stamps ]]; then
|
||||
logger WARN "Timestamp query returned empty response"
|
||||
return 1
|
||||
fi
|
||||
local aligned=$(<<< "$local_stamps" jq -r '.response.publishedfiledetails[]|"\(.publishedfileid),\(.time_updated)"')
|
||||
readarray -t remote_ids < <(<<< "$aligned" awk -F, '{print $1}')
|
||||
readarray -t remote_times < <(<<< "$aligned" awk -F, '{print $2}')
|
||||
|
||||
if [[ ! -f $versions_file ]]; then
|
||||
logger INFO "No prior versions file found, creating"
|
||||
update_stamps "$aligned"
|
||||
#force refresh all mods if versions file was missing
|
||||
printf "%s\n" "${remote_ids[@]}"
|
||||
return 0
|
||||
fi
|
||||
|
||||
readarray -t old_ids < <(< $versions_file awk -F, '{print $1}')
|
||||
readarray -t old_times < <(< $versions_file awk -F, '{print $2}')
|
||||
|
||||
declare -A remote_version
|
||||
declare -A local_version
|
||||
|
||||
for((i = 0; i < ${#remote_ids[@]}; ++i)); do
|
||||
remote_version[${remote_ids[$i]}]=${remote_times[$i]}
|
||||
done
|
||||
|
||||
needs_update=()
|
||||
for((i=0;i<${#old_ids[@]};i++)); do
|
||||
local id=${old_ids[$i]}
|
||||
local time=${old_times[$i]}
|
||||
if [[ $time != ${remote_version[$id]} ]]; then
|
||||
logger WARN "Mod '$id' timestamp '$time' != '${remote_version[$id]}'"
|
||||
needs_update+=($id)
|
||||
fi
|
||||
done
|
||||
printf "%s\n" "${needs_update[@]}"
|
||||
}
|
||||
merge_modlists(){
|
||||
local diff="$1"
|
||||
_sort(){
|
||||
printf "%s\n" "$diff"
|
||||
printf "%s\n" "${needs_update[@]}"
|
||||
}
|
||||
readarray -t needs_update < <(check_timestamps)
|
||||
if [[ -z ${needs_update[@]} ]]; then
|
||||
echo "$diff"
|
||||
return 0
|
||||
fi
|
||||
if [[ -z "$diff" ]] && [[ ${#needs_update[@]} -gt 0 ]]; then
|
||||
printf "%s\n" "${needs_update[@]}"
|
||||
else
|
||||
# remove duplicates
|
||||
_sort | sort -u
|
||||
fi
|
||||
}
|
||||
concat_mods(){
|
||||
readarray -t concat_arr <<< "$@"
|
||||
local id
|
||||
@@ -1269,7 +1212,7 @@ launch(){
|
||||
|
||||
if [[ $debug -eq 1 ]]; then
|
||||
local launch_options="$steam_cmd -applaunch $appid -connect=$ip:$gameport -nolauncher -nosplash -name=$name -skipintro -mod=$concat"
|
||||
printf "Debug mode: these options would have been used to launch the game: $launch_options"
|
||||
printf "Debug mode: these options would have been used to launch the game: %s" "$launch_options"
|
||||
return 0
|
||||
fi
|
||||
echo "$concat" > "$_cache_launch"
|
||||
@@ -1305,75 +1248,121 @@ final_handshake(){
|
||||
printf "\n"
|
||||
return 6
|
||||
}
|
||||
manual_mod_install(){
|
||||
local ip="$1"
|
||||
local gameport="$2"
|
||||
local diff="$3"
|
||||
local sanitized_mods="$4"
|
||||
local mode="$5"
|
||||
local appid="$6"
|
||||
local ex="$state_path/dzg.watcher"
|
||||
watcher(){
|
||||
local -n to_download="$1"
|
||||
local -n signatures="$2"
|
||||
local mode="$3"
|
||||
|
||||
readarray -t stage_mods <<< "$diff"
|
||||
[[ -f $ex ]] && rm $ex
|
||||
declare -i i=0
|
||||
local remote_time
|
||||
local length
|
||||
length=${#to_download[@]}
|
||||
for mod in "${!to_download[@]}"; do
|
||||
remote_time=${to_download[$mod]}
|
||||
[[ -f $ex ]] && return 1
|
||||
case $mode in
|
||||
"auto" | "force")
|
||||
$steam_cmd "steam://url/CommunityFilePage/${mod}+workshop_download_item ${aid} ${mod}"
|
||||
echo "# Opening workshop page for ${mod}. If you see no progress, you may be out of disk space."
|
||||
;;
|
||||
*)
|
||||
$steam_cmd "steam://url/CommunityFilePage/${mod}"
|
||||
echo "# Opening workshop page for ${mod}. If you see no progress after subscribing, try unsubscribing and resubscribing again until the download commences."
|
||||
;;
|
||||
esac
|
||||
sleep 1s
|
||||
foreground
|
||||
|
||||
_watcher(){
|
||||
for((i=0;i<${#stage_mods[@]};i++)); do
|
||||
until [[ -d $downloads_dir/${mod} ]]; do
|
||||
[[ -f $ex ]] && return 1
|
||||
|
||||
if [[ $mode == "auto" ]] || [[ $mode == "force" ]]; then
|
||||
$steam_cmd "steam://url/CommunityFilePage/${stage_mods[$i]}+workshop_download_item $aid ${stage_mods[$i]}"
|
||||
echo "# Opening workshop page for ${stage_mods[$i]}. If you see no progress, you may be out of disk space."
|
||||
else
|
||||
$steam_cmd "steam://url/CommunityFilePage/${stage_mods[$i]}"
|
||||
echo "# Opening workshop page for ${stage_mods[$i]}. If you see no progress after subscribing, try unsubscribing and resubscribing again until the download commences."
|
||||
fi
|
||||
sleep 1s
|
||||
foreground
|
||||
|
||||
until [[ -d $downloads_dir/${stage_mods[$i]} ]]; do
|
||||
[[ -f $ex ]] && return 1
|
||||
sleep 0.1s
|
||||
if [[ -d $workshop_dir/${stage_mods[$i]} ]]; then
|
||||
sleep 0.1s
|
||||
# NOTE: fallback for instantaneous downloads
|
||||
if [[ $mode == "auto" || $mode == "force" ]]; then
|
||||
if [[ -d $workshop_dir/${mod} ]]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
foreground
|
||||
if [[ $mode == "auto" ]] || [[ $mode == "force" ]]; then
|
||||
echo "# Steam is downloading ${stage_mods[$i]} (mod $((i+1)) of ${#stage_mods[@]}). You do not need to manually Subscribe."
|
||||
else
|
||||
echo "# Steam is downloading ${stage_mods[$i]} (mod $((i+1)) of ${#stage_mods[@]})"
|
||||
fi
|
||||
until [[ -d $workshop_dir/${stage_mods[$i]} ]]; do
|
||||
[[ -f $ex ]] && return 1
|
||||
sleep 0.1s
|
||||
done
|
||||
|
||||
foreground
|
||||
echo "# ${stage_mods[$i]} moved to mods dir"
|
||||
done
|
||||
echo "100"
|
||||
}
|
||||
_watcher > >($steamsafe_zenity --pulsate --progress --auto-close --title="DZG Watcher" --width=500 2>/dev/null; rc=$?; [[ $rc -eq 1 ]] && touch $ex)
|
||||
|
||||
if [[ $mode == "force" ]]; then
|
||||
rm "$versions_file"
|
||||
check_timestamps
|
||||
return 0
|
||||
foreground
|
||||
case $mode in
|
||||
"auto" | "force")
|
||||
echo "# Steam is downloading ${mod} (mod $((i+1)) of ${length}). You do not need to manually Subscribe."
|
||||
;;
|
||||
*)
|
||||
echo "# Steam is downloading ${mod} (mod $((i+1)) of ${length})"
|
||||
;;
|
||||
esac
|
||||
|
||||
until [[ -d $workshop_dir/${mod} ]]; do
|
||||
[[ -f $ex ]] && return 1
|
||||
sleep 0.1s
|
||||
done
|
||||
|
||||
foreground
|
||||
if [[ ! -v signatures["${mod}"] ]]; then
|
||||
echo "$mod,$remote_time" >> "$versions_file"
|
||||
else
|
||||
sed -i "s/$mod,${signatures[$mod]}/$mod,$remote_time/" "$versions_file"
|
||||
fi
|
||||
echo "# ${mod} moved to mods dir"
|
||||
i+=1
|
||||
done
|
||||
echo "100"
|
||||
}
|
||||
install_mods(){
|
||||
local sanitized_mods="$1"
|
||||
local mode="$2"
|
||||
local ex="$state_path/dzg.watcher"
|
||||
|
||||
[[ -f $ex ]] && rm "$ex"
|
||||
|
||||
if [[ -f "$versions_file" ]]; then
|
||||
readarray -t local_mods < "$versions_file"
|
||||
else
|
||||
local_mods=()
|
||||
fi
|
||||
|
||||
local diff=$(compare "$sanitized_mods")
|
||||
if [[ -z $diff ]]; then
|
||||
if [[ $mode == "auto" ]]; then
|
||||
rm "$versions_file"
|
||||
check_timestamps
|
||||
declare -A mod_signatures
|
||||
local local_id
|
||||
local local_time
|
||||
for mod in "${local_mods[@]}"; do
|
||||
IFS="," read -ra fields <<< "$mod"
|
||||
local_id="${fields[0]}"
|
||||
local_time="${fields[1]}"
|
||||
mod_signatures[$local_id]=$local_time
|
||||
done
|
||||
|
||||
readarray -t remote_mods <<< "$sanitized_mods"
|
||||
declare -A download
|
||||
local remote_timestamps
|
||||
local remote_id
|
||||
local remote_time
|
||||
remote_timestamps=$(get_timestamps "${remote_mods[@]}")
|
||||
for mod in $(<<< "$remote_timestamps" jq -r '.response.publishedfiledetails[]|"\(.publishedfileid),\(.time_updated)"'); do
|
||||
IFS="," read -ra fields <<< "$mod"
|
||||
remote_id="${fields[0]}"
|
||||
remote_time="${fields[1]}"
|
||||
|
||||
# NOTE: mod is not present in versions file
|
||||
if [[ ! -v mod_signatures["$remote_id"] ]]; then
|
||||
download["$remote_id"]=$remote_time
|
||||
continue
|
||||
fi
|
||||
launch "$ip" "$gameport" "$sanitized_mods" "$appid"
|
||||
else
|
||||
printf "User aborted download process, or some mods may have failed to download. Try connecting again to resync."
|
||||
# NOTE: mod timestamp is out of date
|
||||
local_time="${mod_signatures["$remote_id"]}"
|
||||
if [[ $remote_time != "$local_time" ]]; then
|
||||
download["$remote_id"]=$remote_time
|
||||
continue
|
||||
fi
|
||||
done
|
||||
|
||||
[[ ${#download[@]} -lt 1 ]] && return
|
||||
if [[ $(check_architecture) -eq 1 ]] && [[ $(test_display_mode) == "gm" ]]; then
|
||||
printf "Use Desktop Mode to download mods on Steam Deck"
|
||||
exit 1
|
||||
fi
|
||||
watcher download mod_signatures "$mode" > >($steamsafe_zenity --pulsate --progress --auto-close --title="DZG Watcher" --width=500 2>/dev/null; rc=$?; [[ $rc -eq 1 ]] && touch "$ex")
|
||||
}
|
||||
test_display_mode(){
|
||||
pgrep -a gamescope | grep -q "generate-drm-mode"
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 238 KiB |
Reference in new issue
Block a user