Repository navigation
v2.0.6
Added
- Cross-Platform Save Directory Resolution (
detection.compat_paths,detection.save_reader):- Implemented
get_save_games_paths()andresolve_user_data_path()supporting Proton, Wine, SteamOS, and Linux compat paths (STEAM_COMPAT_DATA_PATH,WINEPREFIX, and standard Steam library roots). - Integrated dynamic user data path resolution into
SaveFileReaderfor robust multi-environment save parsing.
- Implemented
- Dynamic Process & Main Menu Catalog Access (
detection.game_data):- Added
get_target_process_names()andget_main_menu_tokens()dynamically reading custom overrides fromgame_data.jsonwith safe built-in fallbacks.
- Added
Fixed & Hardened
- Safe Bridge Extraction & Path Normalization (
integrations.bridge_installer):- Added zip-slip directory traversal guards (
is_relative_to) during Lua bridge archive decompression. - Switched file extraction to memory-safe
shutil.copyfileobjstreaming and fixed drive-root path formatting across candidate search directories. - Enhanced error diagnostics with explicit permission feedback if the game process is locking files.
- Added zip-slip directory traversal guards (
- Memory-Mapped Save Point Inspection (
detection.save_reader):- Migrated
EXPEDITION_*.savparsing to read-only memory-mapping (mmap.mmap), eliminating complete file loading into memory while searching forLastUsedSavePoint. - Added defensive guards against zero-byte corrupted save files.
- Migrated
- Accurate Tower Trial Matcher (
detection.normalization,detection.detector):- Replaced substring matching with set-based alphanumeric token comparison in
resolve_tower_trial, eliminating false positive collisions between normal enemies and trial bosses. - Refined Endless Tower detection in
GameDetectorto ignore false hits on zones such as "workshop".
- Replaced substring matching with set-based alphanumeric token comparison in
- Discord Presence Fingerprint Completeness (
integrations.discord_rpc):- Extended presence cache fingerprint to track
large_text,small_image,small_text,party_id, andparty_size, ensuring presence updates immediately when secondary metadata changes.
- Extended presence cache fingerprint to track
- Native Win32 Directory Picker (
ui.tray_app):- Replaced Tkinter file dialog with native Win32
SHBrowseForFolderWdialog viactypes, eliminating GUI freezes and window management overhead.
- Replaced Tkinter file dialog with native Win32
- Thread-Safe Settings Persistence (
core.settings):- Protected
SettingsServicestate modifications with reentrant lock (threading.RLock) and isolated temporary file writing using process and thread identifiers.
- Protected
- Win32 Shared File Reading (
core.platform):- Ensured reliable OS file descriptor closure via
closefd=Trueduring shared text reading.
- Ensured reliable OS file descriptor closure via
Changed & Optimized
- Catalog Normalization & Size Optimization (
assets/game_data.json):- Deduplicated punctuation and whitespace variations across all 20 language catalogs, slashing file size by ~40% (~18,500 lines cleaned) without loss of semantic coverage.
- Optimized VirusTotal Upload Streaming (
.github/scripts/virustotal_scan.py):- Optimized multipart payload assembly via preallocated
bytearrayandmemoryviewslice reads. - Standardized JSON report format with structured file verification stats and generated timestamps.
- Optimized multipart payload assembly via preallocated
- Test Suite Expansion & CI Speedup:
- Added unit test suites for VirusTotal scan reporting, save reader mmap/empty file handling, bridge installer zip-slip protection, detector tower edge cases, and normalization token matching.
- Separated fast unit tests fail-fast from integration tests in GitHub Actions CI.
Verification & Security
SHA-256 Checksums
8f5dec31f6d10dde801c90714f4ee1e51a94518b29d975441d60edb1bb7d6f55 Expedition33_RPC.exe
527c18ec51b26892461b9ba64d0327bf62d2ccd1660862a855f7d69208cc09c3 bridge.zip
VirusTotal Analysis Reports
- Expedition33_RPC.exe: VirusTotal Report
- bridge.zip: VirusTotal Report (67/68 Clean)