Skip to content

0.6.0 - Merge to Main#257

Merged
mubaraknumann merged 217 commits intomainfrom
staging
Mar 28, 2026
Merged

0.6.0 - Merge to Main#257
mubaraknumann merged 217 commits intomainfrom
staging

Conversation

@mubaraknumann
Copy link
Copy Markdown
Owner

No description provided.

Mubarak Numann and others added 30 commits March 2, 2026 02:52
…pplying script registry actions, and refining work directory detection.
…le discovery, make proton settings save atomic, and refine proton setting clear logic.
…e overrides to improve compatibility with problematic titles.
Root cause: Decky Loader runs as a systemd service without DISPLAY
environment variables. The spawned UPC process had no display to render
to, so it started but was invisible or crashed silently.

Changes:
- Add _detect_display_env() that reads DISPLAY/WAYLAND from running
  Steam or Gamescope processes when os.environ lacks them
- Update _build_umu_env() to use display detection
- Add comprehensive logging to open_launcher_for_install() including
  command, env vars, and subprocess stderr capture
- Add 2-second crash detection after spawn
- Track active install PIDs for cancel support
- Add cancel_ubisoft_install and is_ubisoft_install_active RPCs
- Frontend: button switches to Cancel during UPC install session
- Frontend: polling clears Cancel state when UPC exits
- Fix race condition in PID tracking for concurrent installs

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
uplay://launch triggers an "Activate a key" prompt when the game
isn't installed. uplay://install/{id} navigates directly to the
game's install page in Ubisoft Connect — one less step for the user.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…imization

- Extract game IDs directly from Wine prefix system.reg/user.reg
  (authoritative, local, no network or fuzzy matching needed)
- Replace 3 inline Python scripts in launcher with bash grep
- Remove redundant PYTHON_BIN search (reuse global)
- Parallelize language setter + session injector pre-launch
- Replace Python-based install path with WORK_DIR fallback
- Add ubisoft:* to KEY parser in launcher
- Ubisoft launch tolerates missing games.map entry
- Prefix path uses dedicated ubisoft/ subfolder

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Mubarak Numann and others added 29 commits March 23, 2026 02:04
…ror handling for concurrent game data lookups.
… management, cleaning up profile locks, and refining token-based availability checks.
… by enhancing session environment detection and process management.
…d games, including CDP injection for browser interaction, and enhance shortcut registration logic.
…connected stores and refining Ubisoft API authentication(wip).
…aunching with new gamepad triggering and controller configuration.
This merge brings in all the Microsoft Store integration work, xCloud browser support,
virtual keyboard, controller configuration enhancements, and related auth/CDP improvements
from the consolidated integration branch.
…oken validation, and implement exponential backoff for API rate limits.
…pending auth syncs, improved state management via cache snapshots, and artwork fetching optimizations.
… Epic and Microsoft store logout by clearing more local authentication data, and expand cache snapshot robustness.
…ting shortcuts and add source tracking for library sync requests.
… files and binaries for authentication and library parsing, removing the API-based login modal.
…ial sharing

Root cause: read_machine_guid() checked root-level system.reg first, which
all prefixes inherited from the template (same GUID). But Proton creates
pfx/system.reg with a unique MachineGuid per prefix, and that's what Wine
uses for DPAPI encryption. Credentials copied from the auth prefix couldn't
decrypt in game prefixes because their pfx-level MachineGuids differed.

Fix:
- Reverse read_machine_guid() order to check pfx/system.reg first (the one
  Proton actually uses for DPAPI) in all 4 locations: ubisoft_inject_session,
  ubisoft_capture_session, ubisoft_setup, and ubisoft.py
- Add _align_prefix_machine_guid() that patches a game prefix's pfx/system.reg
  to match the auth prefix's MachineGuid before credential injection
- Add align_machine_guid() to ubisoft_setup.py, called after bootstrap with
  wineserver -w to safely modify registry after Wine exits
- Use re.sub() for robust multi-entry MachineGuid replacement
- Fix sync_credentials() return value: return True when source has credentials
  even if target already has identical copies (prevents false 'no credentials')

Tested: All prefixes (.upc-auth, .template, game prefixes) now share the same
pfx-level MachineGuid. ConnectSecureStorage.dat hashes match across prefixes.
inject_session() succeeds with aligned GUIDs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…with improved suffix stripping and fuzzy scoring.
Ubisoft API Fixes - Refactor to use Ubisoft Connect completely
@mubaraknumann mubaraknumann merged commit 60b1c99 into main Mar 28, 2026
1 check passed
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