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
26 changes: 22 additions & 4 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ SysManager/
│ ├── Resources/ # icons and assets
│ ├── App.xaml(.cs)
│ ├── MainWindow.xaml(.cs)
│ ├── ServiceRegistration.cs # DI container configuration
│ └── SysManager.csproj
├── SysManager.Tests/ # xUnit unit tests (CI-safe, no system deps)
├── SysManager.IntegrationTests/# xUnit integration tests (local only)
Expand All @@ -37,12 +38,12 @@ Planned features use `PlaceholderViewModel` with a WIP view.
| Group | View Models |
|-------|-------------|
| Dashboard | `DashboardViewModel` |
| System | `SystemHealthViewModel` · `WindowsUpdateViewModel` · `PerformanceViewModel` · `ServicesViewModel` · `StartupViewModel` · `PlaceholderViewModel` (Windows Features) |
| Monitor | `ProcessManagerViewModel` · `PlaceholderViewModel` (Resource History · App Alerts · Privacy Monitor) |
| Cleanup | `CleanupViewModel` · `DeepCleanupViewModel` · `PlaceholderViewModel` (Shortcut Cleaner · File Shredder) |
| System | `SystemHealthViewModel` · `WindowsUpdateViewModel` · `PerformanceViewModel` · `ServicesViewModel` · `StartupViewModel` · `WindowsFeaturesViewModel` |
| Monitor | `ProcessManagerViewModel` · `AppAlertsViewModel` · `PlaceholderViewModel` (Resource History · Privacy Monitor) |
| Cleanup | `CleanupViewModel` · `DeepCleanupViewModel` · `ShortcutCleanerViewModel` · `PlaceholderViewModel` (File Shredder) |
| Storage | `DiskAnalyzerViewModel` · `DuplicateFileViewModel` |
| Network | `PingViewModel` · `TracerouteViewModel` · `SpeedTestViewModel` · `NetworkRepairViewModel` (shared: `NetworkSharedState`) · `PlaceholderViewModel` (DNS Changer · Hosts Editor) |
| Apps | `AppUpdatesViewModel` · `UninstallerViewModel` · `PlaceholderViewModel` (Bulk Installer · App Blocker) |
| Apps | `AppUpdatesViewModel` · `UninstallerViewModel` · `AppBlockerViewModel` · `PlaceholderViewModel` (Bulk Installer) |
| Control | `PlaceholderViewModel` (Privacy Settings · Context Menu · Restore Points · Scheduled Maintenance · System Report) |
| Info | `DriversViewModel` · `BatteryHealthViewModel` · `LogsViewModel` · `AboutViewModel` |

Expand All @@ -68,6 +69,10 @@ Planned features use `PlaceholderViewModel` with a WIP view.
- `DriversViewModel` — driver inventory + Windows Update driver scan.
- `LogsViewModel` — friendly Event Log viewer.
- `AboutViewModel` — version info, auto-update, release history.
- `WindowsFeaturesViewModel` — list, enable, disable Windows optional features.
- `AppAlertsViewModel` — monitors new app installations via FileSystemWatcher + registry.
- `ShortcutCleanerViewModel` — scans and removes broken desktop/Start Menu shortcuts.
- `AppBlockerViewModel` — block/unblock apps via Windows Firewall rules.

## Services

Expand Down Expand Up @@ -113,6 +118,10 @@ Key services:
reporting and system-path skipping.
- `ProcessManagerService` — enumerate running processes, kill by PID,
open file location.
- `WindowsFeaturesService` — list, enable, disable Windows optional features
via `Get-WindowsOptionalFeature` / `Enable-WindowsOptionalFeature` PowerShell.
- `UninstallerService` — winget-based uninstall + registry UninstallString
fallback for local apps not in winget.
Comment on lines +121 to +124

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Document the disable command explicitly.

This line says WindowsFeaturesService can disable features, but only lists Get-WindowsOptionalFeature and Enable-WindowsOptionalFeature. Please include Disable-WindowsOptionalFeature to avoid ambiguity.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ARCHITECTURE.md` around lines 121 - 124, Update the WindowsFeaturesService
description to explicitly list the PowerShell cmdlet used for disabling
features: mention Disable-WindowsOptionalFeature alongside
Get-WindowsOptionalFeature and Enable-WindowsOptionalFeature in the
`WindowsFeaturesService` bullet so the service reads that it lists, enables and
disables Windows optional features via Get-WindowsOptionalFeature /
Enable-WindowsOptionalFeature / Disable-WindowsOptionalFeature.

- `PerformanceService` — power plan, visual effects, Game Mode, Xbox
Game Bar, NVIDIA GPU, processor state, restore point creation, RAM
working set trim, hibernation toggle. Snapshot-based restore.
Expand All @@ -121,6 +130,15 @@ Key services:
- `ServiceManagerService` — enumerate Windows services, gaming
recommendations, start/stop/disable with admin checks.

## Dependency Injection

`ServiceRegistration.cs` configures `Microsoft.Extensions.DependencyInjection`.
`App.OnStartup` builds the `IServiceProvider` and exposes it as `App.Services`.
All services and ViewModels are registered as singletons — one shared instance
per app lifetime. `MainWindowViewModel` resolves child VMs from the container
at runtime; falls back to manual creation in tests (no DI dependency in the
test project).

## Admin elevation

Features that require admin (Windows Update, SFC/DISM, system-wide winget
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ an honest "is it my PC, my ISP, or the server?" verdict.

### Sidebar navigation
The sidebar organises 36 feature tabs into 9 collapsible groups so you can
find what you need without scrolling through a flat list. 24 tabs are fully
implemented; 12 are work-in-progress placeholders marked with ⚙️:
find what you need without scrolling through a flat list. 25 tabs are fully
implemented; 11 are work-in-progress placeholders marked with ⚙️:

| Group | Tabs |
|-------|------|
Expand Down
9 changes: 5 additions & 4 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@ older build, the first step is usually to update.

| Version | Supported |
| ------- | ------------------ |
| 0.43.x | :white_check_mark: |
| 0.34.x | :white_check_mark: |
| 0.33.x | :x: |
| < 0.33 | :x: |
| 0.46.x | :white_check_mark: |
| 0.45.x | :white_check_mark: |
| 0.44.x | :white_check_mark: |
| 0.43.x | :x: |
| < 0.43 | :x: |

## Reporting a vulnerability

Expand Down
Loading