feat: GameVault store integration + launcher/metadata fixes#315
feat: GameVault store integration + launcher/metadata fixes#315stm85 wants to merge 3 commits intomubaraknumann:stagingfrom
Conversation
- Add GameVault store connector (REST API, JWT auth, RAR/ZIP/7z extraction) - Magic-byte based archive format detection (not extension-based) - RAR extraction chain: bsdtar (SteamOS native) -> unrar -> 7z full binary - Executable scoring heuristic to find correct .exe in extracted archives - Install/uninstall support with marker files and games.map integration - Use metadata_title (IGDB) over filename for display name - GameVault credentials modal in Settings - Store icon, filters and frontend integration - Error detail propagation in download manager for better error messages
- Add gamevault:* to store:id case pattern (was causing 'no game key' error) - Fix silent set -e crash in select_proton_version: add || true to all resolve_proton_path calls so unknown tool names fall through to auto-detect - Fix resolve_proton_path: dynamic version regex replaces hardcoded proton_9/10 patterns, now correctly handles Proton 11, 12, etc. - Fix _proton_family: use regex-based major version extraction instead of hardcoded strings (Proton 11 was matched as 'other', causing repeated prefix resets on every launch) - Fix save backup: use timestamped dirs to prevent overwriting earlier backups on repeated resets; back up both Ubisoft Connect managed saves (Program Files (x86)/Ubisoft/Ubisoft Game Launcher/savegames/) and generic Wine user data (drive_c/users/) independently - Add store-aware launch toast (GameVault/GOG/generic) - Guard all GOG-specific code (Galaxy stub, setup, Comet) in else-branch behind STORE=gog checks
When multiple games share the same title (e.g. God of War 2005 vs 2018), get_best_match now uses IGDB platform 6 (PC Windows) as a tiebreaker instead of returning the first result (typically the oldest game by IGDB ID). Secondary tiebreaker: newer release date wins among same-platform matches.
|
Hey, apologies if the earlier communication was confusing. I really appreciate the contribution and looking forward to integrating it with the plugin. Unfortunately, we are in the midst of a major refactor so by the time we merge your PR,the code and architecture will be completely different. This is also my fault since we have not announced this anywhere on GitHub but this is being actively discussed on Discord. Since your PR will probably require some restructuring to align with our new architecture, I will reach out to you once we are ready to integrate on our end. The whole point of the restructure was to enable easier integrations with new stores so I'm hoping it might be much easier for your PR as well. |
|
I also see a lot of bug fixes and enhancements. Looking forward to integrating this! |
|
Hey, thanks for the update — no worries at all! That actually sounds exciting. A refactored architecture with cleaner store integration hooks will probably make the GameVault connector much simpler to plug in anyway. I'll keep an eye out for your message once you're ready. BR |
Summary This PR adds full GameVault support to UnifiDeck and fixes several stability issues found during testing. ### New features - GameVault store connector (
py_modules/unifideck/stores/gamevault.py): REST API integration with JWT Bearer auth, game listing and launch support - GameVault credentials modal (src/components/GameVaultCredentialsModal.tsx): UI for server URL, username, password ### Bug fixes (launcher) - Fixed silent crash after UMU lookup —resolve_proton_pathreturning non-zero withset -eactive - Fixed Proton 11 (and future versions) not being recognized — replaced hardcoded patterns with dynamic regex - Fixed repeated prefix resets on every launch for Proton 11 —_proton_family()now correctly returnsproton-11instead ofother- Fixed save backups being corrupted on second launch — now uses timestamped dirs, keeps last 3 - Fixed wrong save backup path for Ubisoft Connect games - Fixed GOG launch toast showing for all stores — now store-aware (gamevault/gog/generic) - Guarded all GOG-specific code (Galaxy stub, Comet) withif [ "$STORE" = "gog" ]### Bug fixes (metadata) - Fixed wrong game returned for titles with multiple IGDB entries (e.g. God of War 2005 vs 2018) — added PC platform (IGDB ID 6) tiebreaker, secondary tiebreaker: newer release date ### i18n - AddedstartingGameVaultGameandstartingGamekeys to all 14 locale files