|
| 1 | +# Session Context — 2026-03-26 08:15 |
| 2 | + |
| 3 | +## Current Task |
| 4 | +Starting #689/#691 — Progressive server summary landing view with USE/RED/Golden Signals framing. These are being implemented together. Design sketch is on issue #691. |
| 5 | + |
| 6 | +## Decisions Made |
| 7 | + |
| 8 | +### Session-wide |
| 9 | +- Overlay on the slicer canvas, never on ScottPlot charts on other tabs (feedback saved) |
| 10 | +- Dots not lines for overlays — every execution gets a dot, no minimum threshold |
| 11 | +- Drill-down window ±30 min (±15 was too narrow, missed data due to spike chart zero-baseline rendering) |
| 12 | +- Custom date pickers must be populated on drill-down so user can explore other tabs |
| 13 | +- `_isRefreshing` guard needed on CustomDateRange_Changed/CustomTimeCombo_Changed/TimeRangeCombo_SelectionChanged to prevent cascading refreshes during programmatic picker updates |
| 14 | +- Chart drill-down added to all major charts, skipping Resource Metrics detail charts and Query Performance Trends pending #689/#691 consolidation |
| 15 | +- DuckDB path migrated to `%LOCALAPPDATA%\PerformanceMonitorLite\monitor.duckdb` — the old `bin/Debug` path has stale data |
| 16 | + |
| 17 | +### #689/#691 Design |
| 18 | +- Combined implementation: #691 provides framework vocabulary, #689 provides the UI |
| 19 | +- Replaces default landing tab (Wait Stats in Lite, Resource Overview in Dashboard) |
| 20 | +- All data sources already exist — aggregation + presentation only |
| 21 | +- Lite first, then Dashboard port |
| 22 | +- Investigate buttons reuse #684 pattern |
| 23 | +- USE Method sections: CPU, Memory, Disk I/O, TempDB, Workers (each with Utilization/Saturation/Errors) |
| 24 | +- RED Method section: Rate, Errors, Duration |
| 25 | +- Recent Incidents section: ranked problems with navigate links |
| 26 | +- Full design sketch posted on issue #691 |
| 27 | + |
| 28 | +## Work Completed This Session |
| 29 | + |
| 30 | +### Issues closed: |
| 31 | +- #676 — CREATE DATABASE model DB size fix (PR #678) |
| 32 | +- #677 — Azure SQL DB server_id collision (community PR #680) |
| 33 | +- #681 — Slicer time range fixes + new slicers (PRs #697, #698) |
| 34 | +- #683 — Grid-to-slicer dot overlay (PRs #699, #700, #701) |
| 35 | +- #684 — Critical Issues investigate button (PR #702) |
| 36 | +- #682 — Chart drill-down (PRs #705, #706, #708, #709, #711, #714, #717) |
| 37 | +- #704 — Slicer custom range display fix (PR #707) |
| 38 | +- #694 — Support question answered |
| 39 | +- #695 — sp_BlitzLock debugging comment posted |
| 40 | + |
| 41 | +### Key PRs: |
| 42 | +- All merged to dev via squash+admin |
| 43 | +- Branch protection requires PRs — cannot push directly to dev |
| 44 | + |
| 45 | +## Work Remaining |
| 46 | + |
| 47 | +### Immediate: #689/#691 |
| 48 | +- New `ServerSummaryControl` UserControl for Lite |
| 49 | +- Data aggregation queries pulling from existing DuckDB tables |
| 50 | +- USE/RED framework categorization |
| 51 | +- Severity thresholds per signal |
| 52 | +- Navigate-to-tab actions (pattern from #684) |
| 53 | +- Dashboard port after Lite validation |
| 54 | + |
| 55 | +### Deferred: |
| 56 | +- #686 — Unified query detail panel (too much work, needs #689 first) |
| 57 | +- #685 — Inline sparklines in grids |
| 58 | +- #687 — Before/after comparison for query grids |
| 59 | +- #688 — Correlated timeline lanes |
| 60 | +- #690 — Heatmap for query duration |
| 61 | +- #692 — Dynamic baselines (foundation for #693) |
| 62 | +- #693 — Anomaly detection |
| 63 | +- #696 — XE sessions stay running after Lite closes (design choice) |
| 64 | +- Dashboard port of remaining Resource Metrics drill-downs (post #689) |
| 65 | +- Dashboard chart time display mode for ScottPlot charts (pre-existing issue) |
| 66 | + |
| 67 | +## Important Context |
| 68 | + |
| 69 | +### File paths |
| 70 | +- Lite slicer: `Lite/Controls/TimeRangeSlicerControl.xaml.cs` |
| 71 | +- Dashboard slicer: `Dashboard/Controls/TimeRangeSlicerControl.xaml.cs` |
| 72 | +- Lite ServerTab: `Lite/Controls/ServerTab.xaml.cs` (~4500 lines) |
| 73 | +- Dashboard ServerTab: `Dashboard/ServerTab.xaml.cs` (~2000 lines) |
| 74 | +- Dashboard QueryPerformanceContent: `Dashboard/Controls/QueryPerformanceContent.xaml.cs` |
| 75 | +- DuckDB path: `C:/Users/edarl/AppData/Local/PerformanceMonitorLite/monitor.duckdb` (NOT the bin/Debug path) |
| 76 | + |
| 77 | +### Timezone notes |
| 78 | +- Server (sql2022): Pacific time (UTC-7 DST / UTC-8 standard) |
| 79 | +- User machine: Eastern time (UTC-4 DST / UTC-5 standard) |
| 80 | +- `ServerTimeHelper.UtcOffsetMinutes` is the SERVER's offset from UTC |
| 81 | +- Chart X-axis data is in server local time (UTC + UtcOffsetMinutes) |
| 82 | +- Hover helper returns server local time |
| 83 | +- Date pickers show user's local time |
| 84 | +- DuckDB stores collection_time in UTC |
| 85 | + |
| 86 | +### Git workflow |
| 87 | +- ALWAYS use feature branches + PRs (branch protection on dev and main) |
| 88 | +- `gh pr merge --squash --admin` to merge |
| 89 | +- Never push directly to dev — will be rejected |
| 90 | + |
| 91 | +### Build issues |
| 92 | +- `taskkill` not reliably killing processes this session — Defender or runtime holding file locks |
| 93 | +- User has to manually close apps before rebuild |
| 94 | +- Dashboard MCP server can also hold DLL locks |
0 commit comments