Initial commit: PulseDock System Monitor
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# Architecture & Technical Design – PulseDock
|
||||
|
||||
## Overview
|
||||
PulseDock is built on modern C# .NET 10 WPF architecture leveraging Dependency Injection, MVVM separation, and non-blocking background telemetry sampling.
|
||||
|
||||
```
|
||||
┌─────────────────────────┐
|
||||
│ App Bootstrapper │
|
||||
│ (Microsoft.Extensions │
|
||||
│ .DependencyInjection) │
|
||||
└────────────┬────────────┘
|
||||
│
|
||||
┌───────────────────────┼───────────────────────┐
|
||||
▼ ▼ ▼
|
||||
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
|
||||
│ Hardware │ │ Settings & │ │ Theme & Position │
|
||||
│ Monitoring │ │ Notifications │ │ Management │
|
||||
│ Service │ │ Services │ │ Services │
|
||||
└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘
|
||||
│ │ │
|
||||
└───────────────────────┼───────────────────────┘
|
||||
▼
|
||||
┌───────────────────────┐
|
||||
│ MainWidgetViewModel │
|
||||
└───────────┬───────────┘
|
||||
▼
|
||||
┌───────────────────────┐
|
||||
│ MainWindow (WPF UI) │
|
||||
│ Glassmorphism XAML │
|
||||
└───────────────────────┘
|
||||
```
|
||||
|
||||
## Key Architectural Principles
|
||||
|
||||
1. **Non-Blocking Telemetry Polling**:
|
||||
- `HardwareMonitoringService` executes hardware polling on background tasks via `PeriodicTimer` and `CancellationToken`.
|
||||
- Never blocks the WPF UI thread (`Dispatcher.InvokeAsync` marshals updates cleanly).
|
||||
|
||||
2. **Non-Elevated Safe Fallbacks**:
|
||||
- Standard user mode startup.
|
||||
- If `LibreHardwareMonitorLib` kernel driver access is denied without Admin rights, it automatically falls back to `PerformanceCounter`, WMI, `NetworkInterface`, and `System.Diagnostics` without crashing.
|
||||
|
||||
3. **Memory Optimization**:
|
||||
- `CircularBuffer<T>` allocates fixed-size arrays for 60s/300s/900s history arrays.
|
||||
- Zero endless GC allocations during long runtime sessions.
|
||||
|
||||
4. **Custom WPF Drawing Controls**:
|
||||
- `SparklineControl` and `ProgressRingControl` derive directly from `FrameworkElement` using `DrawingContext`, bypassing heavy WPF layout trees for rendering.
|
||||
@@ -0,0 +1,16 @@
|
||||
# Changelog – PulseDock
|
||||
|
||||
## [1.0.0] - 2026-07-23
|
||||
|
||||
### Added
|
||||
- Initial production-ready release of PulseDock.
|
||||
- .NET 10 WPF Application with MVVM architecture.
|
||||
- Glassmorphic UI supporting Compact, Standard, and Expanded view modes.
|
||||
- Telemetry services for CPU, RAM, GPU, Disks, Network, Battery, and Top Processes.
|
||||
- Custom `SparklineControl` and `ProgressRingControl`.
|
||||
- Non-admin fallback mechanism for LibreHardwareMonitor and WMI/PerformanceCounters.
|
||||
- Configurable warning alerts with notifications & audio cues.
|
||||
- Tray icon context menu & HKCU registry autostart manager.
|
||||
- Multi-monitor DPI-aware position bounds clamping & position locking.
|
||||
- Global Click-Through hotkey (`Ctrl + Shift + F12`).
|
||||
- Complete xUnit test suite & self-contained Release x64 build configuration.
|
||||
@@ -0,0 +1,9 @@
|
||||
# Contributing to PulseDock
|
||||
|
||||
Thank you for your interest in contributing to PulseDock!
|
||||
|
||||
## Guidelines
|
||||
1. Ensure all code targets **.NET 10** (`net10.0-windows`) with Nullable Reference Types enabled (`<Nullable>enable</Nullable>`).
|
||||
2. Follow MVVM pattern and keep view code-behind minimal.
|
||||
3. Add unit tests in `PulseDock.Tests` for any new utility formatting or calculation logic.
|
||||
4. Run `dotnet test` and ensure zero build warnings before submitting code.
|
||||
Reference in New Issue
Block a user