Skip to content

Release 2.4.11#299

Merged
patchzyy merged 11 commits into
mainfrom
dev
Jul 9, 2026
Merged

Release 2.4.11#299
patchzyy merged 11 commits into
mainfrom
dev

Conversation

@patchzyy

@patchzyy patchzyy commented Jul 9, 2026

Copy link
Copy Markdown
Member

Summary

  • Bump Wheel Wizard version to 2.4.11.
  • Add the Flatpak metainfo release entry for 2.4.11 dated 2026-07-09.

Validation

  • C:\Users\patchzy\.dotnet\dotnet.exe restore WheelWizard.sln
  • C:\Users\patchzy\.dotnet\dotnet.exe test WheelWizard.sln --configuration Release --verbosity normal passed: 174 tests, 0 failures.

Summary by CodeRabbit

  • New Features

    • Added support for opening Wheel Wizard links directly from the desktop.
    • Improved Dolphin handling with both native and Flatpak detection.
    • Mod browsing now skips entries with content ratings and can use archived download files when needed.
  • Bug Fixes

    • Updated several translated messages for cleaner line breaks and corrected localization keys.
    • Improved settings and path detection for Linux/Flatpak environments.
    • Updated GameBanana connectivity and app metadata for the new release.

Alexis-Lapierre and others added 11 commits June 17, 2026 00:43
For some reasons when I pick the precompiled Linux version everything works as expected.
But building from source result in an Avalonia crash:
> System.ArgumentException: 0 is not a valid value for 'FontSize'.
>   at Avalonia.PropertyStore.ValueStore.SetValue[T](StyledProperty`1 property, T value, BindingPriority priority)

Don’t really know why. Could have built this application with a different Avalonia version? I don’t really use C# usually.
fix: fixed auto-detect of data folder to be based on textbox instead of
saved value
feat: auto-detect of native dolphin
fix: crash on Mii Editor: Font Size 0
fix(gamebanana): Filter out mod results with content ratings
feat(flatpak): Provide Wheel Wizard URL handler `.desktop`
…tings-ux

fix: Improve installation and settings UX
@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: a68ed941-fe0e-4aea-b28a-5264cb0a1b63

📥 Commits

Reviewing files that changed from the base of the PR and between 8df6d60 and 1a03b9d.

📒 Files selected for processing (34)
  • Flatpak/io.github.TeamWheelWizard.WheelWizard-url-handler.desktop
  • Flatpak/io.github.TeamWheelWizard.WheelWizard.metainfo.xml
  • WheelWizard.Test/Features/GameBananaTests.cs
  • WheelWizard.Test/Features/LinuxDolphinInstallerTests.cs
  • WheelWizard.Test/Features/Settings/SettingsTests.cs
  • WheelWizard/Features/DolphinInstaller/LinuxDolphinInstaller.cs
  • WheelWizard/Features/DolphinInstaller/LinuxProcessService.cs
  • WheelWizard/Features/GameBanana/Domain/GameBananaModDetails.cs
  • WheelWizard/Features/GameBanana/Domain/GameBananaModPreview.cs
  • WheelWizard/Features/GameBanana/GameBananaSingletonService.cs
  • WheelWizard/Features/Settings/SettingsManager.cs
  • WheelWizard/Resources/Languages/cs.yml
  • WheelWizard/Resources/Languages/de.yml
  • WheelWizard/Resources/Languages/en.yml
  • WheelWizard/Resources/Languages/es.yml
  • WheelWizard/Resources/Languages/fi.yml
  • WheelWizard/Resources/Languages/fr.yml
  • WheelWizard/Resources/Languages/it.yml
  • WheelWizard/Resources/Languages/ja.yml
  • WheelWizard/Resources/Languages/ko.yml
  • WheelWizard/Resources/Languages/nl.yml
  • WheelWizard/Resources/Languages/pt.yml
  • WheelWizard/Resources/Languages/ru.yml
  • WheelWizard/Resources/Languages/tr.yml
  • WheelWizard/Services/Endpoints.cs
  • WheelWizard/Services/Launcher/Helpers/DolphinLaunchHelper.cs
  • WheelWizard/Services/PathManager.cs
  • WheelWizard/Views/Components/PopupListButton.axaml
  • WheelWizard/Views/Layout.axaml
  • WheelWizard/Views/Layout.axaml.cs
  • WheelWizard/Views/Pages/Settings/WhWzSettings.axaml.cs
  • WheelWizard/Views/Popups/ModManagement/ModBrowserWindow.axaml.cs
  • WheelWizard/Views/Popups/ModManagement/ModContent.axaml.cs
  • WheelWizard/WheelWizard.csproj

📝 Walkthrough

Walkthrough

This PR reworks Linux Flatpak Dolphin install/detection to use user-scoped Flatpak commands, adds native Dolphin detection, updates GameBanana models with content-rating/archived-file fields and API version, reformats language YAML files to block scalars with key renames, fixes a UI arrow icon, simplifies "Made by" text rendering, and bumps the release version.

Changes

Linux Dolphin Flatpak Detection & Installation

Layer / File(s) Summary
Process output capture
WheelWizard/Features/DolphinInstaller/LinuxProcessService.cs
Adds a Run overload with out stdOut/stdErr parameters; the simpler overload delegates to it.
Flatpak/native detection and user-scoped install
WheelWizard/Features/DolphinInstaller/LinuxDolphinInstaller.cs, WheelWizard.Test/Features/LinuxDolphinInstallerTests.cs
Detects Flatpak Dolphin via flatpak list output, adds IsDolphinInstalledNative(), and switches installation to flatpak install --user -y with user-scoped remote-add, removing the prior pkexec system-install path.
PathManager Flatpak path helpers
WheelWizard/Services/PathManager.cs
Simplifies IsFlatpakDolphinFilePath to a "flatpak run" prefix check, parameterizes callers, and adds a TryFindUserFolderPath(string) overload.
SettingsManager wiring
WheelWizard/Features/Settings/SettingsManager.cs, WheelWizard.Test/Features/Settings/SettingsTests.cs
Removes ILinuxDolphinInstaller dependency from constructor/validation, using PathManager.IsFlatpakDolphinFilePath(dolphinLocation) instead; tests updated to the new constructor signature.
Launch permission fixing
WheelWizard/Services/Launcher/Helpers/DolphinLaunchHelper.cs
Extracts the Dolphin Flatpak app id dynamically and passes it into portal-access fixes instead of a hardcoded app id; updates the launch-time Flatpak check.
Settings UI detection flow
WheelWizard/Views/Pages/Settings/WhWzSettings.axaml.cs
Iterates Flatpak/native install candidates, prompts before auto-filling the executable path, exits early when sandboxed, and adds IsNativeDolphinInstalled().

GameBanana Content Ratings & Archived Files

Layer / File(s) Summary
Model fields and API version
WheelWizard/Features/GameBanana/Domain/GameBananaModPreview.cs, ...GameBananaModDetails.cs, WheelWizard/Services/Endpoints.cs
Adds HasContentRatings to previews, makes Files nullable and adds ArchivedFiles to details, and bumps GameBananaBaseAddress to apiv12.
Filtering and download fallback
WheelWizard/Views/Popups/ModManagement/ModBrowserWindow.axaml.cs, ModContent.axaml.cs, WheelWizard/Features/GameBanana/GameBananaSingletonService.cs, WheelWizard.Test/Features/GameBananaTests.cs
Excludes rated mods during loading, sets HasContentRatings=false on placeholders/fakes, and falls back to ArchivedFiles when Files/OverrideDownloadUrl are unavailable.

Localization Reformatting

Layer / File(s) Summary
Made by text rendering
WheelWizard/Views/Layout.axaml, Layout.axaml.cs, WheelWizard/Resources/Languages/*.yml
Replaces split TextBlocks with a single MadeBy block; reformats made_by_string into YAML block scalars across all language files.
Key renames and message reformatting
WheelWizard/Resources/Languages/*.yml
Renames rr_not_determentrr_not_determined and dolphin_flatpackdolphin_flatpak, updates install-scope wording, and converts multiple multi-line messages to block scalars.

UI & Release Metadata

Layer / File(s) Summary
Arrow icon fix
WheelWizard/Views/Components/PopupListButton.axaml
Removes FontSize="0" from PART_ArrowIcon.
Version bump
Flatpak/...-url-handler.desktop, Flatpak/...metainfo.xml, WheelWizard/WheelWizard.csproj
Adds URL-handler desktop entry, a 2.4.11 release entry, and bumps project version to 2.4.11.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Settings as WhWzSettings
  participant Installer as LinuxDolphinInstaller
  participant Process as LinuxProcessService
  Settings->>Installer: InstallFlatpakDolphin()
  Installer->>Process: Run("flatpak remote-add --user ...")
  Installer->>Process: Run("flatpak install --user -y ...")
  Process-->>Installer: OperationResult<int>
  Installer->>Installer: LaunchAndStopAsync()
  Installer-->>Settings: OperationResult
Loading

Possibly related PRs

Suggested reviewers: matellush

Poem

A rabbit hops through Flatpak dens,
Swaps system installs for user-friends,
YAML lines now break just right,
"Made by" glows in single light,
Ratings hide the mods too spicy,
Version bumped—hop hop, so nicey! 🐇✨

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@patchzyy patchzyy merged commit 4137cd3 into main Jul 9, 2026
2 of 3 checks 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.

4 participants