Skip to content

feat: GameVault store integration + launcher/metadata fixes#315

Open
stm85 wants to merge 3 commits intomubaraknumann:stagingfrom
stm85:feature/gamevault-integration
Open

feat: GameVault store integration + launcher/metadata fixes#315
stm85 wants to merge 3 commits intomubaraknumann:stagingfrom
stm85:feature/gamevault-integration

Conversation

@stm85
Copy link
Copy Markdown

@stm85 stm85 commented Apr 29, 2026

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_path returning non-zero with set -e active - 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 returns proton-11 instead of other - 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) with if [ "$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 - Added startingGameVaultGame and startingGame keys to all 14 locale files

SteffenStMueller added 3 commits April 29, 2026 11:31
- 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.
Repository owner deleted a comment from src893 Apr 30, 2026
@mubaraknumann
Copy link
Copy Markdown
Owner

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.

@mubaraknumann
Copy link
Copy Markdown
Owner

I also see a lot of bug fixes and enhancements. Looking forward to integrating this!

@stm85
Copy link
Copy Markdown
Author

stm85 commented Apr 30, 2026

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants