Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed

- **Module `SortOrder` values renumbered to eliminate a collision.** `JellyfinModule` and `AndroidPowerToolsModule` both declared `SortOrder = 2`, so the sidebar order held only by the `DisplayName` alphabetical tiebreak. Renumbered Jellyfin `2 → 3`, Utilities `3 → 4`, and Cameras `4 → 5` so every module has a distinct ordering key (Android Devices `1` and Android Power Tools `2` unchanged). The rendered sidebar / module-tile order is unchanged — this only removes the fragile tie. `CamerasModuleTests.SortOrder_Is4` renamed to `SortOrder_Is5`.

### Removed

- **Orphaned `scrcpy` dependency dropped from the Android Devices module.** `AndroidDevicesModule` declared `scrcpy` (GitHub-sourced, `Genymobile/scrcpy`) as a `ModuleDependency`, but nothing in the app has invoked `scrcpy.exe` since the ws-scrcpy-web sidecar replaced the native-scrcpy mirror in Phase 8a (2026-04-11). Impact: (1) drops a per-dependency-sync GitHub releases API call; (2) removing `scripts/dependencies/fetch-scrcpy.ps1` (auto-discovered by `stage-seed.ps1`) stops bundling the ~40 MB `scrcpy-win64` payload — `scrcpy.exe` + SDL/ffmpeg DLLs + `scrcpy-server` + a duplicate `adb.exe` — into every MSI; (3) `SeedHydrator` now prunes a pre-existing `<dataRoot>\dependencies\scrcpy\` on launch (best-effort, logged) so existing installs reclaim the space on upgrade. Synthetic test fixtures that used `"scrcpy"` as a dependency name were renamed to `"fake-tool"`. README dependency tables updated to match.
Expand Down
2 changes: 1 addition & 1 deletion src/ControlMenu/Modules/Cameras/CamerasModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public class CamerasModule : IToolModule
public string Id => "cameras";
public string DisplayName => "Cameras";
public string Icon => "bi-camera-video";
public int SortOrder => 4;
public int SortOrder => 5;

/// <summary>
/// Set by Program.cs on startup AND on CameraChangeNotifier.CamerasChanged.
Expand Down
2 changes: 1 addition & 1 deletion src/ControlMenu/Modules/Jellyfin/JellyfinModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public class JellyfinModule : IToolModule
public string Id => "jellyfin";
public string DisplayName => "Jellyfin";
public string Icon => "bi-film";
public int SortOrder => 2;
public int SortOrder => 3;

private static readonly string DepsRoot = ControlMenu.Services.DepsRootHolder.Path;

Expand Down
2 changes: 1 addition & 1 deletion src/ControlMenu/Modules/Utilities/UtilitiesModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ public class UtilitiesModule : IToolModule
public string Id => "utilities";
public string DisplayName => "Utilities";
public string Icon => "bi-tools";
public int SortOrder => 3;
public int SortOrder => 4;

public IEnumerable<ModuleDependency> Dependencies => [];
public IEnumerable<ConfigRequirement> ConfigRequirements => [];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class CamerasModuleTests
public void DisplayName_IsCameras() => Assert.Equal("Cameras", _sut.DisplayName);

[Fact]
public void SortOrder_Is4() => Assert.Equal(4, _sut.SortOrder);
public void SortOrder_Is5() => Assert.Equal(5, _sut.SortOrder);

[Fact]
public void GetNavEntries_ReturnsEntriesFromEnabledCameras()
Expand Down
Loading