-
Notifications
You must be signed in to change notification settings - Fork 144
Plugin Monitoring
abbaye edited this page Mar 7, 2026
·
1 revision
Real-time CPU% and memory charts for every loaded plugin — no external tooling required.
Tools → Plugin Monitoring or dock alongside Plugin Manager.
flowchart TD
VM["PluginMonitoringViewModel\nobserves PluginEntry collection\npolls at 1 s interval"]
Counter["PerformanceCounter\nProcess % Processor Time"]
GC["GC.GetTotalMemory()\nmanaged heap snapshot"]
History["Rolling history per plugin\nCanvas + Polyline\nno third-party lib"]
Panel["PluginMonitoringPanel.xaml\nDataTrigger-driven status dots\ntheme PM_* brushes"]
PMgr["PluginManagerViewModel\nSelectionChanged → scroll to plugin row"]
VM --> Counter
VM --> GC
VM --> History
History --> Panel
PMgr --> VM
┌──────────────────────────────────────────────────────────┐
│ [●] com.example.myplugin v1.0.0 Loaded │
│ │
│ CPU % ████▂▄▆▄▂▁▁▁▂▄▄▂▁▁ 2.3 % │
│ Mem MB ▁▁▁▁▂▂▂▂▂▂▂▂▂▂▂▂▂▂ 12.4 MB │
└──────────────────────────────────────────────────────────┘
- Status dot: Green = Loaded · Yellow = Deactivated · Red = Faulted
- CPU chart: rolling polyline of CPU% over last N samples
- Memory chart: rolling polyline of managed heap MB
All 8 built-in themes define these keys:
| Key | Description |
|---|---|
PM_BackgroundBrush |
Panel background |
PM_RowBorderBrush |
Row separator |
PM_ChartCpuBrush |
CPU chart line |
PM_ChartCpuHighBrush |
CPU spike highlight |
PM_ChartMemBrush |
Memory chart line |
PM_StatusLoadedBrush |
Dot — Loaded |
PM_StatusFaultedBrush |
Dot — Faulted |
PM_StatusDisabledBrush |
Dot — Disabled |
PM_LabelForegroundBrush |
Plugin name |
PM_ValueForegroundBrush |
Numeric values |
| Setting | Default | Description |
|---|---|---|
MonitoringEnabled |
true |
Stop/start polling |
MonitoringIntervalMs |
1000 |
Poll interval in ms |
MaxHistoryPoints |
120 |
Rolling chart buffer (2 min @ 1 s) |
Configure in Tools → Options → Plugins → Monitoring.
- CPU% is approximate — measured via
WrapAsync()elapsed time, not per-thread CPU time - Memory is total managed heap — not isolated per-plugin unless using
PluginSandbox - No alert thresholds — display only (planned)
- Plugin System — plugin lifecycle
- Plugin Manager — enable/disable/reload
- Architecture — ContentId routing
✨ Wpf HexEditor user control, by Derek Tremblay (derektremblay666@gmail.com) coded for your fun! 😊🤟
- API Reference
- Performance
- Services
- Core Components
- ByteProvider
- Rendering Engine
- Search Architecture
- whfmt.FileFormatCatalog v1.0.0 NuGet (cross-platform net8.0)
- 690+ .whfmt definitions (schema v2.3)
- Structure Editor — block DataGrid, drag-drop, validation, SmartComplete
- WhfmtBrowser/Catalog panels — browse all embedded formats
- AI Assistant (5 providers, 25 MCP tools)
- Tab Groups, Document Structure, Lazy Plugin Loading
- Window Menu + Win32 Fullscreen (
F11) - Git Integration UI (changes, history, blame)
- Shared Undo Engine (HexEditor ↔ CodeEditor)
- Bracket pair colorization, sticky scroll, peek definition
- Format detection hardening (thread-safe, crash guard)