Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
234 commits
Select commit Hold shift + click to select a range
3350fed
fix: Disable Dolphin Flatpak installation popup in the Flatpak version
matellush Apr 11, 2025
605e2da
Merge pull request #126 from matellush/fix/flatpak-ww-no-popup
patchzyy Apr 11, 2025
ac683b9
Fix for bug
patchzyy Apr 13, 2025
1f18a23
update ver
patchzyy Apr 13, 2025
9249105
Merge pull request #131 from TeamWheelWizard/FixPathEscape
WantToBeeMe Apr 13, 2025
c480a55
fix: Improve Flatpak permission handling and use of portals
matellush Apr 13, 2025
4b0cbd2
fix: Bump version
matellush Apr 13, 2025
19ff28a
Merge pull request #134 from matellush/fix/flatpak-doc-portal
patchzyy Apr 13, 2025
2b2968d
fix: Always use absolute Riivolution destination path
matellush Apr 18, 2025
a2728e2
fix: Use correct string for `..` check
matellush Apr 18, 2025
f167ba4
Merge pull request #141 from matellush/main
patchzyy Apr 18, 2025
5a48dcb
fix: Add missing directory separator to required parent directory
matellush Apr 19, 2025
ad4a2af
.
patchzyy May 3, 2025
56044ac
Merge branch 'MiiEditor' into MiiExtraBits
patchzyy May 3, 2025
b0227f7
CustomData
patchzyy May 3, 2025
4f345d1
Start on custom bits
patchzyy May 4, 2025
95382a1
Tagline + perfer
patchzyy May 4, 2025
2e6bef0
name
patchzyy May 4, 2025
654411c
Update path
patchzyy May 4, 2025
139075b
Improved
patchzyy May 4, 2025
0127f2a
remove etext
patchzyy May 4, 2025
7e1e51b
Squashed commit of the following:
patchzyy May 4, 2025
da081a3
Merge branch 'MiiEditor' into MiiExtraBits
patchzyy May 4, 2025
5339f80
lil changes
WantToBeeMe May 4, 2025
63fc43e
ceheckbox
WantToBeeMe May 4, 2025
f776982
.
WantToBeeMe May 4, 2025
4dba859
broken bits
patchzyy May 4, 2025
22100c8
Merge pull request #143 from matellush/main
patchzyy May 5, 2025
514b784
Merge pull request #151 from TeamWheelWizard/MiiEditor
patchzyy May 6, 2025
432fae0
update
patchzyy May 6, 2025
cb04229
merge
patchzyy May 6, 2025
1968ba7
Merge branch 'main' into dev
patchzyy May 6, 2025
a7a6e8f
Update README.md
patchzyy May 6, 2025
04bb093
Merge pull request #153 from TeamWheelWizard/patchzyy-patch-1
patchzyy May 6, 2025
bea3210
Merge pull request #152 from TeamWheelWizard/dev
patchzyy May 6, 2025
4b31c97
fix: Update Flatpak `.metainfo.xml`
matellush May 6, 2025
3d30f63
Merge pull request #154 from matellush/main
patchzyy May 6, 2025
123eb36
update
patchzyy May 6, 2025
321b306
28 to 24
patchzyy May 7, 2025
92cb8c7
Formatting
patchzyy May 7, 2025
e9dabb0
Squashed commit of the following:
patchzyy May 7, 2025
e264dbe
mii extentions
patchzyy May 7, 2025
2dfbc98
fix: Respect Dolphin settings for `Load` and `Wii` folders
matellush May 7, 2025
43752fc
initial
WantToBeeMe May 8, 2025
d668bee
small code cleanup ish
WantToBeeMe May 8, 2025
c90d1d4
changed text representation
WantToBeeMe May 8, 2025
8dd7029
fix enums things
WantToBeeMe May 9, 2025
a2c75f5
hair colors
WantToBeeMe May 9, 2025
1a40299
add the last few colors
WantToBeeMe May 10, 2025
4ee1c06
Merge pull request #156 from TeamWheelWizard/MoreMiiFiles
WantToBeeMe May 10, 2025
823d5a5
Merge branch 'dev' into feat/color-buttons-instead-of-dropdowns
WantToBeeMe May 10, 2025
c212278
default Male & Female
WantToBeeMe May 10, 2025
a9fa4b4
option button, i think they look sick
WantToBeeMe May 12, 2025
b35eb22
mii selection between male and female
WantToBeeMe May 12, 2025
948d345
move is global to an extention
WantToBeeMe May 12, 2025
551ace0
no need for variable
WantToBeeMe May 12, 2025
531805a
feat: Allow `-p` option for `flatpak-run(1)` commands
matellush May 13, 2025
58cfa0d
random a lil
WantToBeeMe May 14, 2025
77012ca
fix: Correctly update online status of current user profile
matellush May 15, 2025
f88f6be
Merge pull request #161 from matellush/fix/license-online-status
patchzyy May 16, 2025
fd3aba8
Merge pull request #160 from matellush/feat/allow-dolphin-option
patchzyy May 16, 2025
e33dff1
Merge pull request #157 from matellush/fix/respect-dolphin-overrides
patchzyy May 16, 2025
94367ff
Merge pull request #158 from TeamWheelWizard/feat/color-buttons-inste…
patchzyy May 16, 2025
64214e6
Merge branch 'main' into dev
WantToBeeMe May 16, 2025
42c04b4
better randomizer
WantToBeeMe May 16, 2025
315a66e
randomize button in editor
WantToBeeMe May 16, 2025
bf352fa
allow custom chars in the Mii editor
WantToBeeMe May 16, 2025
6053ffc
re think how favorite works
WantToBeeMe May 16, 2025
678c3d8
exporting Mii now is more readable for non-ascii characters
WantToBeeMe May 16, 2025
75b3839
no beta flag anymore
WantToBeeMe May 16, 2025
f42cd99
Update RrRoom.cs
patchzyy May 24, 2025
1168a7b
Slow start
patchzyy May 10, 2025
10a0f54
Update Logic
patchzyy May 10, 2025
c4646b2
Slowly start replacing
patchzyy May 11, 2025
cb4348e
It crashes, but compiles
patchzyy May 11, 2025
7631c83
Works with new systrem now
patchzyy May 11, 2025
06656ba
Better download logic
patchzyy May 11, 2025
793cea6
di
patchzyy May 11, 2025
ccbbdba
Inject and remove
patchzyy May 15, 2025
53c3d66
Refit
patchzyy May 15, 2025
3154e37
Working on getting rid of the progressbar needed
patchzyy May 15, 2025
bb68795
.
patchzyy May 15, 2025
52e6928
progresswindow
patchzyy May 16, 2025
e0634cc
async
patchzyy May 16, 2025
29716db
Extracting rr
patchzyy May 17, 2025
f53ac84
Path Removation
patchzyy May 21, 2025
fb5dfdf
Update RetroRewind.cs
patchzyy May 22, 2025
e6d74e9
Close should not be handled by api
patchzyy May 24, 2025
149a990
Fix vers
patchzyy May 24, 2025
a34d06b
fix: Drop incorrect expression in Dolphin location validation
matellush May 27, 2025
b324fd7
fix: Use correct quoting (cf. commit b932d4971c719b8982ab192c582aeb5d…
matellush May 27, 2025
790924a
Update ModManager.cs
patchzyy Jun 3, 2025
bb51b70
Merge pull request #169 from TeamWheelWizard/Fix-the-triple-merge-con…
WantToBeeMe Jun 3, 2025
fbfdf16
Merge pull request #164 from TeamWheelWizard/GameModes
WantToBeeMe Jun 3, 2025
2b42eb7
Merge pull request #162 from TeamWheelWizard/feat/better-characters
patchzyy Jun 4, 2025
4e88201
Merge pull request #167 from matellush/fix/wrong-quotes
patchzyy Jun 4, 2025
da19517
Merge pull request #166 from matellush/fix/dolphin-location-correctness
patchzyy Jun 4, 2025
2961483
Statistics
patchzyy Jun 9, 2025
1348a8f
Statistics
patchzyy Jun 10, 2025
615c637
Fixed race count finally
Jun 10, 2025
c066c30
Fav Char
patchzyy Jun 10, 2025
b52b6f3
fix row
WantToBeeMe Jun 14, 2025
fe29817
re-organize folder
WantToBeeMe Jun 14, 2025
a8a2934
extract classes
WantToBeeMe Jun 14, 2025
f2aa510
disavled fixed
WantToBeeMe Jun 14, 2025
f17cf71
update from spreadsheet
WantToBeeMe Jun 14, 2025
cf8db45
some things
WantToBeeMe Jun 14, 2025
f565b1c
Merge branch 'dev' into task/translations--again
WantToBeeMe Jun 14, 2025
36e90d1
more changes
WantToBeeMe Jun 14, 2025
8e0b5f6
button
WantToBeeMe Jun 14, 2025
f233eb1
rename to state
WantToBeeMe Jun 14, 2025
b56f671
move bits and bobs
WantToBeeMe Jun 14, 2025
c915c04
move everything in the common file
WantToBeeMe Jun 14, 2025
f423388
rename info text to helper text
WantToBeeMe Jun 14, 2025
a4b681d
moved action to common
WantToBeeMe Jun 14, 2025
39e47cd
moved placeholders
WantToBeeMe Jun 14, 2025
aea2fe4
remove these online resx that somehow came back
WantToBeeMe Jun 14, 2025
71d2d41
rename empty text to empty content
WantToBeeMe Jun 14, 2025
bfd85a5
a few new keys
WantToBeeMe Jun 14, 2025
d67990a
messages things
WantToBeeMe Jun 15, 2025
7d3ee8b
did a bucn of question renaming
WantToBeeMe Jun 15, 2025
b77554c
checkpoint
WantToBeeMe Jun 15, 2025
985d64e
removed all popup instances
WantToBeeMe Jun 15, 2025
464ea53
add params
WantToBeeMe Jun 15, 2025
2c9cd35
rename to msg translation
WantToBeeMe Jun 15, 2025
4b720ce
remove string implicite operator
WantToBeeMe Jun 15, 2025
d44deb6
add message translations to this thing
WantToBeeMe Jun 15, 2025
39f80e1
message box showable
WantToBeeMe Jun 15, 2025
f413d0c
a lot more translations for the Mii
WantToBeeMe Jun 15, 2025
197dd52
fix failed test
WantToBeeMe Jun 15, 2025
67de175
things
WantToBeeMe Jun 15, 2025
691b23c
Mods are translated yay
WantToBeeMe Jun 17, 2025
2d1d832
Merge branch 'dev' into GameupdateService
patchzyy Jun 17, 2025
57dd09e
Update SetupExtensions.cs
patchzyy Jun 17, 2025
7e4a13b
more popup titles
WantToBeeMe Jun 17, 2025
91e7c68
Merge pull request #171 from TeamWheelWizard/Tracker
WantToBeeMe Jun 18, 2025
9264d94
Merge pull request #165 from TeamWheelWizard/GameupdateService
WantToBeeMe Jun 18, 2025
7b07200
import again
WantToBeeMe Jun 18, 2025
facde0b
Merge branch 'dev' into task/translations--again
WantToBeeMe Jun 18, 2025
869442b
fix wrong thingies
WantToBeeMe Jun 18, 2025
d0ba947
move translations to different page and alter subtext
WantToBeeMe Jun 20, 2025
5db6e3f
all the Mii attributes
WantToBeeMe Jun 20, 2025
9c22977
thjngs
WantToBeeMe Jun 20, 2025
639bdf2
small changes
WantToBeeMe Jun 21, 2025
50e0787
import all the changes
WantToBeeMe Jun 21, 2025
949d901
move around placeholders
WantToBeeMe Jun 21, 2025
6677d4e
last changes
WantToBeeMe Jun 21, 2025
4d58b2d
add tnew values
WantToBeeMe Jun 22, 2025
92c17aa
operation result much easier
WantToBeeMe Jun 23, 2025
dd5e75b
italian updatre
WantToBeeMe Jun 23, 2025
c74c8ab
.
WantToBeeMe Jun 23, 2025
48cd96a
Merge pull request #172 from TeamWheelWizard/Summit-Showdown-badges
patchzyy Jun 24, 2025
40c882a
Merge pull request #170 from TeamWheelWizard/task/translations--again
patchzyy Jun 24, 2025
867d0d6
change room details page
WantToBeeMe Jun 27, 2025
97d1a8b
import a handfull of translations
WantToBeeMe Jun 27, 2025
947f68b
mod list buttons fix
WantToBeeMe Jun 27, 2025
b62fa9d
fix that friend offline/online tag can be slightly bigger than its place
WantToBeeMe Jun 27, 2025
a8aa937
Trails work
WantToBeeMe Jun 27, 2025
16833fc
extended Height property which can be used for animating later
WantToBeeMe Jun 27, 2025
3f967c1
this is so satisfying
WantToBeeMe Jun 27, 2025
f7309ae
this is soo satisfying
WantToBeeMe Jun 27, 2025
7244ab9
some more properties
WantToBeeMe Jun 28, 2025
808033a
so cool this wheel
WantToBeeMe Jun 28, 2025
0267e0c
rotate
WantToBeeMe Jun 28, 2025
1b3bde0
option 1
WantToBeeMe Jun 28, 2025
27680ee
animation setting again
WantToBeeMe Jun 28, 2025
20823f8
Spelling errors corrected in Phrases.resx
WorthYapper958 Jun 28, 2025
bac2e4c
better animations
WantToBeeMe Jun 28, 2025
77b6fd3
re-organizing
WantToBeeMe Jun 28, 2025
dda006f
tried to make all the animations good
WantToBeeMe Jun 28, 2025
2dcd894
animations are almost perfect imo
WantToBeeMe Jun 28, 2025
1245797
re-roder
WantToBeeMe Jun 28, 2025
d50ab20
import langauges
WantToBeeMe Jun 28, 2025
f95521c
update percentage
WantToBeeMe Jun 28, 2025
64aed37
Merge pull request #175 from WorthYapper958/main
WantToBeeMe Jun 28, 2025
29cd1bd
Merge branch 'main' into dev
WantToBeeMe Jun 28, 2025
3f57c83
Merge pull request #173 from TeamWheelWizard/minor-tweaks
patchzyy Jun 28, 2025
a272cd1
Merge pull request #174 from TeamWheelWizard/feat/Wheel-Trail
patchzyy Jun 28, 2025
233b726
new version
WantToBeeMe Jun 28, 2025
bf712fa
packaging: Update Flatpak `.metainfo.xml`
matellush Jun 28, 2025
61fdbbe
Merge pull request #176 from matellush/main
WantToBeeMe Jun 28, 2025
f6f3296
Fix initial RetroRewind installation crashing WheelWizard
Umbrason Jun 29, 2025
e015d52
remove duplicate package ref
Umbrason Jun 29, 2025
2398fc7
Merge pull request #179 from Umbrason/remove-duplicate-package-ref
WantToBeeMe Jun 29, 2025
f2bbcd4
Add proper error handling
Umbrason Jun 29, 2025
5a885fc
fix missing RetroRewind6.xml on initial install
Umbrason Jun 29, 2025
e296216
Merge pull request #177 from Umbrason/fixRRInstall
WantToBeeMe Jun 30, 2025
eca9b7d
update version
WantToBeeMe Jun 30, 2025
11a68c4
Merge branch 'dev' of https://github.com/TeamWheelWizard/WheelWizard …
WantToBeeMe Jun 30, 2025
9ce59e4
packaging: Update Flatpak `.metainfo.xml` file with new release
matellush Jun 30, 2025
26c6410
Merge pull request #180 from matellush/packaging
WantToBeeMe Jun 30, 2025
b95f437
fix move across volumes
Umbrason Jun 30, 2025
7559eed
Ensure unix read permission is set
Umbrason Jul 1, 2025
59f9bc6
Merge pull request #182 from Umbrason/fixRRInstall
WantToBeeMe Jul 1, 2025
cafc2c5
linkting
WantToBeeMe Jul 1, 2025
7ea79d6
adding logging
WantToBeeMe Jul 1, 2025
5727421
did a little changing
WantToBeeMe Jul 1, 2025
0f3d7ff
Merge pull request #183 from TeamWheelWizard/linting-retro-rewind-code
WantToBeeMe Jul 1, 2025
6348c24
Merge branch 'main' into dev
WantToBeeMe Jul 1, 2025
9a0c2d6
Update WheelWizard.csproj
WantToBeeMe Jul 1, 2025
f8be170
Update io.github.TeamWheelWizard.WheelWizard.metainfo.xml
WantToBeeMe Jul 1, 2025
4101ead
Update RrLauncher.cs
patchzyy Jul 19, 2025
a03d668
Merge pull request #188 from TeamWheelWizard/Add-launch
WantToBeeMe Jul 19, 2025
8abf60d
Update WheelWizard.csproj
patchzyy Sep 14, 2025
5986775
Update io.github.TeamWheelWizard.WheelWizard.metainfo.xml
WantToBeeMe Sep 14, 2025
c6ff44b
Update io.github.TeamWheelWizard.WheelWizard.metainfo.xml
WantToBeeMe Sep 14, 2025
975d074
fix: Do not trim text inside `TextInputWindow`
matellush Sep 14, 2025
32ebc27
fix: Correct error texts to match the actual check
matellush Sep 14, 2025
2cac72a
fix: Update online room mappings
matellush Sep 14, 2025
f7c3a2a
Merge pull request #193 from matellush/fix/space-handling-in-validation
patchzyy Sep 15, 2025
a732ff7
Merge pull request #194 from matellush/fix/creator-name-length
patchzyy Sep 15, 2025
55f599b
Merge pull request #195 from matellush/fix/regions
patchzyy Sep 15, 2025
e5eb9c2
custom Wheel Wizard data folder
patchzyy Sep 20, 2025
a7f506a
validation logic
patchzyy Sep 20, 2025
fb7184d
Update PathManager.cs
patchzyy Sep 21, 2025
0722813
Update PathManager.cs
patchzyy Sep 21, 2025
056d524
Update PathManager.cs
patchzyy Sep 22, 2025
ec3a0bb
Update PathManager.cs
patchzyy Sep 23, 2025
076c0cb
Handle directory deletion
patchzyy Oct 5, 2025
ca4747b
Update PathManager.cs
patchzyy Oct 5, 2025
0d5af02
view changes
WantToBeeMe Oct 5, 2025
542c5fc
Add platform-specific build configurations
patchzyy Oct 5, 2025
da1c566
HOTFIX crash on initializing popup window for surtain monitors
WantToBeeMe Oct 5, 2025
de9b4c0
Merge branch 'dev' into ChangeAppdataFolder
WantToBeeMe Oct 5, 2025
586ee87
Improve app data folder move with detailed outcomes and error handling
patchzyy Oct 5, 2025
2f823e4
Merge pull request #196 from TeamWheelWizard/ChangeAppdataFolder
WantToBeeMe Oct 5, 2025
9e4d76e
Update WheelWizard.csproj
patchzyy Oct 25, 2025
799d599
Merge branch 'dev' into MiiExtraBits
patchzyy Dec 7, 2025
534a974
Fix merge conflicts
patchzyy Dec 7, 2025
bb7b92a
Fix everything up
patchzyy Dec 7, 2025
7b79f0b
Add explicit bit field ordering to CustomMiiData
patchzyy Dec 9, 2025
6191415
Update CustomMiiData.cs
patchzyy Dec 9, 2025
ade2322
Update CustomMiiData.cs
patchzyy Dec 10, 2025
3a035d0
Improve CustomMiiData version migration logic
patchzyy Dec 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,54 @@
<Project>
<PropertyGroup>
<CSharpier_Check>false</CSharpier_Check>
<Configurations>Debug;Release;Debug-Windows;Debug-Linux;Debug-macOS;Release-Windows;Release-Linux;Release-macOS</Configurations>
<Platforms>AnyCPU</Platforms>
</PropertyGroup>

<!-- Platform-specific constants for Debug configurations -->
<PropertyGroup Condition="'$(Configuration)' == 'Debug-Windows'">
<DefineConstants>$(DefineConstants);DEBUG;TRACE;WINDOWS</DefineConstants>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<Optimize>false</Optimize>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)' == 'Debug-Linux'">
<DefineConstants>$(DefineConstants);DEBUG;TRACE;LINUX</DefineConstants>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
<Optimize>false</Optimize>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)' == 'Debug-macOS'">
<DefineConstants>$(DefineConstants);DEBUG;TRACE;MACOS</DefineConstants>
<RuntimeIdentifier>osx-arm64</RuntimeIdentifier>
<Optimize>false</Optimize>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
</PropertyGroup>

<!-- Platform-specific constants for Release configurations -->
<PropertyGroup Condition="'$(Configuration)' == 'Release-Windows'">
<DefineConstants>$(DefineConstants);TRACE;WINDOWS</DefineConstants>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<Optimize>true</Optimize>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)' == 'Release-Linux'">
<DefineConstants>$(DefineConstants);TRACE;LINUX</DefineConstants>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
<Optimize>true</Optimize>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)' == 'Release-macOS'">
<DefineConstants>$(DefineConstants);TRACE;MACOS</DefineConstants>
<RuntimeIdentifier>osx-arm64</RuntimeIdentifier>
<Optimize>true</Optimize>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="CSharpier.MsBuild" Version="0.30.6">
<PrivateAssets>all</PrivateAssets>
Expand Down
15 changes: 10 additions & 5 deletions Flatpak/io.github.TeamWheelWizard.WheelWizard.metainfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,19 @@
<screenshots>
<screenshot type="default">
<caption>Wheel Wizard's home page</caption>
<image type="source">https://raw.githubusercontent.com/TeamWheelWizard/.github/d8eb58433cea25d438f4d6fb79bfececd5ccbc73/images/screenshots/home_page.png</image>
<image type="source">https://raw.githubusercontent.com/TeamWheelWizard/.github/261be51961d07ac217d343f4a03231b57e603866/images/screenshots/home_page.png</image>
</screenshot>
<screenshot>
<caption>Wheel Wizard's room details page</caption>
<image type="source">https://raw.githubusercontent.com/TeamWheelWizard/.github/d8eb58433cea25d438f4d6fb79bfececd5ccbc73/images/screenshots/rooms_page.png</image>
<image type="source">https://raw.githubusercontent.com/TeamWheelWizard/.github/d1c065020c1a526d80eb08f53423543f0f5c3439/images/screenshots/rooms_page.png</image>
</screenshot>
<screenshot>
<caption>Wheel Wizard's profile page</caption>
<image type="source">https://raw.githubusercontent.com/TeamWheelWizard/.github/d8eb58433cea25d438f4d6fb79bfececd5ccbc73/images/screenshots/profile_page.png</image>
<image type="source">https://raw.githubusercontent.com/TeamWheelWizard/.github/d1c065020c1a526d80eb08f53423543f0f5c3439/images/screenshots/profile_page.png</image>
</screenshot>
<screenshot>
<caption>Wheel Wizard's mod browser</caption>
<image type="source">https://raw.githubusercontent.com/TeamWheelWizard/.github/d8eb58433cea25d438f4d6fb79bfececd5ccbc73/images/screenshots/mods_browser.png</image>
<caption>Wheel Wizard's Mii management page</caption>
<image type="source">https://raw.githubusercontent.com/TeamWheelWizard/.github/d1c065020c1a526d80eb08f53423543f0f5c3439/images/screenshots/mii_page.png</image>
</screenshot>
</screenshots>

Expand All @@ -55,6 +55,11 @@
</provides>

<releases>
<release version="2.3.3" date="2025-09-14"/>
<release version="2.3.2" date="2025-07-01"/>
<release version="2.3.1" date="2025-06-30"/>
<release version="2.3.0" date="2025-06-28"/>
<release version="2.2.1" date="2025-05-06"/>
<release version="2.1.3" date="2025-04-13"/>
<release version="2.1.0" date="2025-04-11"/>
</releases>
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ Feel free to join our community on [Discord](https://discord.gg/vZ7T2wJnsq) for
<img src="https://github.com/TeamWheelWizard/.github/blob/main/images/screenshots/rooms_page.png" alt="Wheel Wizard Logo" width="450"/>
<img src="https://github.com/TeamWheelWizard/.github/blob/main/images/screenshots/profile_page.png" alt="Wheel Wizard Logo" width="450"/>
<img src="https://github.com/TeamWheelWizard/.github/blob/main/images/screenshots/mods_browser.png" alt="Wheel Wizard Logo" width="450"/>
<img src="https://github.com/TeamWheelWizard/.github/blob/main/images/screenshots/miieditor_page.png" alt="Wheel Wizard Logo" width="450"/>
<img src="https://github.com/TeamWheelWizard/.github/blob/main/images/screenshots/mii_page.png" alt="Wheel Wizard Logo" width="450"/>
</p>
---

Expand Down
6 changes: 2 additions & 4 deletions WheelWizard.Test/Features/GameBananaTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public async Task GetModSearchResults_WithApiError_ReturnsFailure()

_apiCaller
.CallApiAsync(Arg.Any<Expression<Func<IGameBananaApi, Task<GameBananaSearchResults>>>>())
.Returns(Fail<GameBananaSearchResults>(expectedError));
.Returns(Fail(expectedError));

// Act
var result = await _service.GetModSearchResults(searchTerm, page);
Expand Down Expand Up @@ -128,9 +128,7 @@ public async Task GetModDetails_WithApiError_ReturnsFailure()
var modId = 123;
var expectedError = "API Error";

_apiCaller
.CallApiAsync(Arg.Any<Expression<Func<IGameBananaApi, Task<GameBananaModDetails>>>>())
.Returns(Fail<GameBananaModDetails>(expectedError));
_apiCaller.CallApiAsync(Arg.Any<Expression<Func<IGameBananaApi, Task<GameBananaModDetails>>>>()).Returns(Fail(expectedError));

// Act
var result = await _service.GetModDetails(modId);
Expand Down
58 changes: 26 additions & 32 deletions WheelWizard.Test/Features/MiiDbServiceTests.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using NSubstitute.ExceptionExtensions;
using Testably.Abstractions;
using WheelWizard.Shared;
using WheelWizard.WiiManagement;
using WheelWizard.WiiManagement.Domain.Mii;
using WheelWizard.WiiManagement.MiiManagement;
using WheelWizard.WiiManagement.MiiManagement.Domain.Mii;

namespace WheelWizard.Test.Features
{
Expand Down Expand Up @@ -30,13 +30,13 @@ private OperationResult<Mii> CreateValidMii(uint id = 1, string name = "TestMii"
var height = MiiScale.Create(60);
var weight = MiiScale.Create(50);
var miiFacial = MiiFacialFeatures.Create(MiiFaceShape.Bread, MiiSkinColor.Brown, MiiFacialFeature.Beard, false, false);
var miiHair = MiiHair.Create(1, HairColor.Black, false);
var miiEyebrows = MiiEyebrow.Create(3, 3, EyebrowColor.Black, 3, 3, 3);
var miiEyes = MiiEye.Create(3, 3, 3, EyeColor.Black, 3, 3);
var miiNose = MiiNose.Create(NoseType.Default, 3, 3);
var miiLips = MiiLip.Create(3, LipColor.Pink, 3, 3);
var miiGlasses = MiiGlasses.Create(GlassesType.None, GlassesColor.Blue, 3, 3);
var miiFacialHair = MiiFacialHair.Create(MustacheType.None, BeardType.None, MustacheColor.Black, 3, 3);
var miiHair = MiiHair.Create(1, MiiHairColor.Black, false);
var miiEyebrows = MiiEyebrow.Create(3, 3, MiiHairColor.Black, 3, 3, 3);
var miiEyes = MiiEye.Create(3, 3, 3, MiiEyeColor.Black, 3, 3);
var miiNose = MiiNose.Create(MiiNoseType.Default, 3, 3);
var miiLips = MiiLip.Create(3, MiiLipColor.Pink, 3, 3);
var miiGlasses = MiiGlasses.Create(MiiGlassesType.None, MiiGlassesColor.Blue, 3, 3);
var miiFacialHair = MiiFacialHair.Create(MiiMustacheType.None, MiiBeardType.None, MiiHairColor.Black, 3, 3);
var miiMole = MiiMole.Create(true, 3, 3, 3);
var creatorName = MiiName.Create("Creator");
var miiFavoriteColor = MiiFavoriteColor.Red;
Expand All @@ -57,9 +57,7 @@ private OperationResult<Mii> CreateValidMii(uint id = 1, string name = "TestMii"
creatorName,
};
if (EveryResult.Any(r => r.IsFailure))
{
return Fail<Mii>(EveryResult.First(r => r.IsFailure).Error);
}
return EveryResult.First(r => r.IsFailure).Error!;

return Ok(
new Mii
Expand All @@ -68,7 +66,7 @@ private OperationResult<Mii> CreateValidMii(uint id = 1, string name = "TestMii"
MiiId = miiId,
Height = height.Value,
Weight = weight.Value,
MiiFacial = miiFacial.Value,
MiiFacialFeatures = miiFacial.Value,
MiiHair = miiHair.Value,
MiiEyebrows = miiEyebrows.Value,
MiiEyes = miiEyes.Value,
Expand Down Expand Up @@ -131,7 +129,6 @@ public void MiiSerializer_Deserialize_ShouldFail_ForInvalidDataLength()

// Assert
Assert.True(result.IsFailure);
Assert.Equal(result.IsFailure, true);
}

[Fact]
Expand All @@ -145,7 +142,6 @@ public void MiiSerializer_Deserialize_ShouldFail_ForNullData()

// Assert
Assert.True(result.IsFailure);
Assert.Equal(result.IsFailure, true);
}

[Fact]
Expand Down Expand Up @@ -280,7 +276,7 @@ public void GetByClientId_ShouldReturnFailure_WhenDeserializationFails()
// Arrange
uint targetId = 666;
var badBytes = new byte[MiiSerializer.MiiBlockSize];
for (int i = 0; i < badBytes.Length; i++)
for (var i = 0; i < badBytes.Length; i++)
{
badBytes[i] = (byte)(i % 256);
}
Expand All @@ -292,7 +288,6 @@ public void GetByClientId_ShouldReturnFailure_WhenDeserializationFails()

// Assert
Assert.True(result.IsFailure);
Assert.Equal(result.IsFailure, true);
_repositoryService.Received(1).GetRawBlockByAvatarId(targetId);
}

Expand Down Expand Up @@ -350,7 +345,7 @@ public void Update_ShouldReturnFailure_WhenRepositoryUpdateFails()

// Assert
Assert.True(result.IsFailure);
Assert.Equal(repoError.Error, result.Error); // Propagate the exact error
Assert.Equal(repoError, result.Error); // Propagate the exact error
_repositoryService.Received(1).UpdateBlockByClientId(miiToUpdate.MiiId, Arg.Is<byte[]>(b => b.SequenceEqual(expectedBytes)));
}

Expand Down Expand Up @@ -385,8 +380,8 @@ public void UpdateName_ShouldReturnSuccess_WhenGetAndUpdateSucceed()
{
// Arrange
uint targetId = 333;
string oldName = "OldName";
string newName = "NewName";
var oldName = "OldName";
var newName = "NewName";
var miiResult = CreateValidMii(targetId, oldName);
Assert.True(miiResult.IsSuccess, "Setup Failed: Could not create original Mii");
var originalMii = miiResult.Value;
Expand Down Expand Up @@ -420,15 +415,15 @@ public void UpdateName_ShouldReturnFailure_WhenGetByClientIdFails_NotFound()
{
// Arrange
uint targetId = 404;
string newName = "NewName";
var newName = "NewName";
_repositoryService.GetRawBlockByAvatarId(targetId).Returns((byte[]?)null);

// Act
var result = _service.UpdateName(targetId, newName);

// Assert
Assert.True(result.IsFailure);
Assert.Equal("Mii block not found or invalid.", result.Error.Message); // Error from GetByClientId
Assert.Equal("Mii block not found", result.Error.Message); // Error from GetByClientId
_repositoryService.Received(1).GetRawBlockByAvatarId(targetId);
_repositoryService.DidNotReceive().UpdateBlockByClientId(Arg.Any<uint>(), Arg.Any<byte[]>());
}
Expand All @@ -438,7 +433,7 @@ public void UpdateName_ShouldReturnFailure_WhenGetByClientIdFails_Deserializatio
{
// Arrange
uint targetId = 666;
string newName = "NewName";
var newName = "NewName";
var badBytes = new byte[MiiSerializer.MiiBlockSize]; // Correct size, bad content
_repositoryService.GetRawBlockByAvatarId(targetId).Returns(badBytes);

Expand All @@ -457,8 +452,8 @@ public void UpdateName_ShouldReturnFailure_WhenNewNameIsInvalid()
{
// Arrange
uint targetId = 555;
string oldName = "ValidOld";
string invalidNewName = "ThisNameIsDefinitelyTooLongForTheMii"; // > 10 chars
var oldName = "ValidOld";
var invalidNewName = "ThisNameIsDefinitelyTooLongForTheMii"; // > 10 chars
var miiResult = CreateValidMii(targetId, oldName);
Assert.True(miiResult.IsSuccess, "Setup Failed: Could not create original Mii");
var originalBytes = GetSerializedBytes(miiResult.Value);
Expand All @@ -470,7 +465,6 @@ public void UpdateName_ShouldReturnFailure_WhenNewNameIsInvalid()

// Assert
Assert.True(result.IsFailure);
Assert.Equal(result.IsFailure, true);
_repositoryService.Received(1).GetRawBlockByAvatarId(targetId);
_repositoryService.DidNotReceive().UpdateBlockByClientId(Arg.Any<uint>(), Arg.Any<byte[]>());
}
Expand All @@ -480,8 +474,8 @@ public void UpdateName_ShouldReturnFailure_WhenRepositoryUpdateFails()
{
// Arrange
uint targetId = 777;
string oldName = "Old";
string newName = "New";
var oldName = "Old";
var newName = "New";
var miiResult = CreateValidMii(targetId, oldName);
Assert.True(miiResult.IsSuccess, "Setup Failed: Could not create original Mii");
var originalBytes = GetSerializedBytes(miiResult.Value);
Expand All @@ -497,7 +491,7 @@ public void UpdateName_ShouldReturnFailure_WhenRepositoryUpdateFails()

// Assert
Assert.True(result.IsFailure);
Assert.Equal(repoError.Error, result.Error); // Error from the repository update propagated
Assert.Equal(repoError, result.Error); // Error from the repository update propagated
_repositoryService.Received(1).GetRawBlockByAvatarId(targetId);
_repositoryService.Received(1).UpdateBlockByClientId(targetId, Arg.Any<byte[]>());
}
Expand All @@ -507,7 +501,7 @@ public void UpdateName_ShouldHandleExceptionDuringGet()
{
// Arrange
uint targetId = 111;
string newName = "New";
var newName = "New";
var expectedException = new TimeoutException("Timeout contacting repository");
_repositoryService.GetRawBlockByAvatarId(targetId).Throws(expectedException);

Expand All @@ -523,8 +517,8 @@ public void UpdateName_ShouldHandleExceptionDuringUpdate()
{
// Arrange
uint targetId = 222;
string oldName = "Old";
string newName = "New";
var oldName = "Old";
var newName = "New";
var miiResult = CreateValidMii(targetId, oldName);
Assert.True(miiResult.IsSuccess, "Setup Failed: Could not create original Mii");
var originalBytes = GetSerializedBytes(miiResult.Value);
Expand Down
3 changes: 2 additions & 1 deletion WheelWizard.Test/Features/MiiSerializerTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using WheelWizard.WiiManagement;
using WheelWizard.WiiManagement.MiiManagement;

namespace WheelWizard.Test.Features;

Expand Down Expand Up @@ -94,7 +95,7 @@ public void RoundTrip_Serialization_ShouldBeConsistent(string base64Data)
Assert.Equal(mii.Name.ToString(), miiRoundTrip.Name.ToString());
Assert.Equal(mii.Height.Value, miiRoundTrip.Height.Value);
Assert.Equal(mii.Weight.Value, miiRoundTrip.Weight.Value);
Assert.Equal(mii.MiiFacial.FaceShape, miiRoundTrip.MiiFacial.FaceShape);
Assert.Equal(mii.MiiFacialFeatures.FaceShape, miiRoundTrip.MiiFacialFeatures.FaceShape);
Assert.Equal(mii.MiiEyes.Type, miiRoundTrip.MiiEyes.Type);
Assert.Equal(mii.MiiGlasses.Type, miiRoundTrip.MiiGlasses.Type);
Assert.Equal(mii.CreatorName.ToString(), miiRoundTrip.CreatorName.ToString());
Expand Down
15 changes: 8 additions & 7 deletions WheelWizard.Test/Features/WhWzDataTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public async Task GetStatusAsync_ReturnsFailure_WhenApiCallFails()
// Arrange
var expectedError = new OperationError { Message = "API call failed" };

_apiCaller.CallApiAsync(Arg.Any<Expression<Func<IWhWzDataApi, Task<WhWzStatus>>>>()).Returns(Fail<WhWzStatus>(expectedError));
_apiCaller.CallApiAsync(Arg.Any<Expression<Func<IWhWzDataApi, Task<WhWzStatus>>>>()).Returns(expectedError);

// Act
var result = await _service.GetStatusAsync();
Expand All @@ -59,7 +59,7 @@ public async Task LoadBadgesAsync_ReturnsSuccess_WhenApiCallSucceeds()
{
{ "FC1", [BadgeVariant.WhWzDev, BadgeVariant.Translator] },
{ "FC2", [BadgeVariant.RrDev] },
{ "FC3", [BadgeVariant.None, BadgeVariant.GoldWinner] },
{ "FC3", [BadgeVariant.None, BadgeVariant.Firestarter_GoldWinner] },
};

_apiCaller.CallApiAsync(Arg.Any<Expression<Func<IWhWzDataApi, Task<Dictionary<string, BadgeVariant[]>>>>>()).Returns(Ok(badgeData));
Expand All @@ -77,9 +77,7 @@ public async Task LoadBadgesAsync_ReturnsFailure_WhenApiCallFails()
// Arrange
var expectedError = new OperationError { Message = "API call failed" };

_apiCaller
.CallApiAsync(Arg.Any<Expression<Func<IWhWzDataApi, Task<Dictionary<string, BadgeVariant[]>>>>>())
.Returns(Fail<Dictionary<string, BadgeVariant[]>>(expectedError));
_apiCaller.CallApiAsync(Arg.Any<Expression<Func<IWhWzDataApi, Task<Dictionary<string, BadgeVariant[]>>>>>()).Returns(expectedError);

// Act
var result = await _service.LoadBadgesAsync();
Expand Down Expand Up @@ -162,7 +160,10 @@ public async Task LoadBadgesAsync_OverwritesExistingBadges_WhenCalledMultipleTim
Assert.Contains(BadgeVariant.WhWzDev, initialBadges);

// Arrange - Second load with different data
var updatedBadgeData = new Dictionary<string, BadgeVariant[]> { { "FC1", [BadgeVariant.Translator, BadgeVariant.GoldWinner] } };
var updatedBadgeData = new Dictionary<string, BadgeVariant[]>
{
{ "FC1", [BadgeVariant.Translator, BadgeVariant.Firestarter_GoldWinner] },
};

_apiCaller
.CallApiAsync(Arg.Any<Expression<Func<IWhWzDataApi, Task<Dictionary<string, BadgeVariant[]>>>>>())
Expand All @@ -175,7 +176,7 @@ public async Task LoadBadgesAsync_OverwritesExistingBadges_WhenCalledMultipleTim
var updatedBadges = _service.GetBadges("FC1");
Assert.Equal(2, updatedBadges.Length);
Assert.Contains(BadgeVariant.Translator, updatedBadges);
Assert.Contains(BadgeVariant.GoldWinner, updatedBadges);
Assert.Contains(BadgeVariant.Firestarter_GoldWinner, updatedBadges);
Assert.DoesNotContain(BadgeVariant.WhWzDev, updatedBadges);
}
}
1 change: 1 addition & 0 deletions WheelWizard.Test/GlobalUsings.cs
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
global using NSubstitute;
global using static WheelWizard.Shared.OperationError;
global using static WheelWizard.Shared.OperationResult;
Loading