Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
926 commits
Select commit Hold shift + click to select a range
1657e50
Review fixes for #1506 generic webhook + connection alerts
erikdarlingdata Jul 13, 2026
d86e189
Merge remote-tracking branch 'origin/dev' into feature/1506-connectio…
erikdarlingdata Jul 13, 2026
7ad4a86
Merge pull request #1508 from erikdarlingdata/feature/1506-azure-mast…
erikdarlingdata Jul 13, 2026
9ffc6c2
Merge remote-tracking branch 'origin/dev' into feature/1506-connectio…
erikdarlingdata Jul 13, 2026
d97b9d2
Collapse config-diff twin to shared Common + build Lite Configuration…
erikdarlingdata Jul 13, 2026
a34693a
Merge pull request #1511 from erikdarlingdata/feature/1506-connection…
erikdarlingdata Jul 13, 2026
c32eeaf
Merge remote-tracking branch 'origin/dev' into feature/lite-config-ch…
erikdarlingdata Jul 13, 2026
941f849
Merge pull request #1512 from erikdarlingdata/feature/lite-config-cha…
erikdarlingdata Jul 13, 2026
1f67932
Lite: Expensive Queries sub-tab (unified cross-source ranked list, Ti…
erikdarlingdata Jul 13, 2026
24e653e
Merge pull request #1513 from erikdarlingdata/feature/lite-expensive-…
erikdarlingdata Jul 13, 2026
06213c5
Lite: Blocking Stats severity sub-tab (Tier-1 parity)
erikdarlingdata Jul 13, 2026
01bbb8e
Merge pull request #1514 from erikdarlingdata/feature/lite-blocking-s…
erikdarlingdata Jul 13, 2026
215b551
Darling: live Current Active Queries via service-mediated command
erikdarlingdata Jul 13, 2026
1195b36
Darling: CHANGELOG entry for live Current Active Queries (#1515)
erikdarlingdata Jul 13, 2026
1662ada
Merge pull request #1515 from erikdarlingdata/feature/darling-live-ac…
erikdarlingdata Jul 13, 2026
7d5822f
Darling viewer: Query Store Regressions sub-tab (Dashboard parity)
erikdarlingdata Jul 14, 2026
fc6cb3c
Darling: CHANGELOG entry for Query Store Regressions sub-tab (#1516)
erikdarlingdata Jul 14, 2026
ebcd32f
Merge pull request #1516 from erikdarlingdata/feature/darling-qs-regr…
erikdarlingdata Jul 14, 2026
9a4b95c
Add 3 Tier-2 issue-classification arms to the shared FactScorer
erikdarlingdata Jul 14, 2026
64f26f3
CHANGELOG: fill in PR #1517 link
erikdarlingdata Jul 14, 2026
3c25172
Port 18 MCP tools to Lite (Tier-2 Lite<->Darling parity)
erikdarlingdata Jul 14, 2026
d242ee8
Merge remote-tracking branch 'origin/dev' into feature/lite-mcp-tool-…
erikdarlingdata Jul 14, 2026
e00d3d6
CHANGELOG: correct MCP-ports PR number to #1518 (analysis took #1517)
erikdarlingdata Jul 14, 2026
bfbe142
Merge remote-tracking branch 'origin/dev' into feature/tier2-analysis…
erikdarlingdata Jul 14, 2026
cf34020
Merge pull request #1518 from erikdarlingdata/feature/lite-mcp-tool-p…
erikdarlingdata Jul 14, 2026
f24f445
Merge remote-tracking branch 'origin/dev' into feature/tier2-analysis…
erikdarlingdata Jul 14, 2026
ab76a44
Merge pull request #1517 from erikdarlingdata/feature/tier2-analysis-…
erikdarlingdata Jul 14, 2026
d7f9ed8
Tier-2 batch-2a: tempdb-deep analysis arms (shared FactScorer)
erikdarlingdata Jul 14, 2026
98422a6
CHANGELOG: fill in tempdb-arms PR number #1519
erikdarlingdata Jul 14, 2026
19c6770
CHANGELOG: remove duplicate PRNUM-placeholder link-ref
erikdarlingdata Jul 14, 2026
e659b77
Merge pull request #1519 from erikdarlingdata/feature/tier2-tempdb-arms
erikdarlingdata Jul 14, 2026
df8befe
Tier-2 batch-2b: priority-boost + lightweight-pooling config arms
erikdarlingdata Jul 14, 2026
8b8527d
Merge pull request #1520 from erikdarlingdata/feature/tier2-config-arms
erikdarlingdata Jul 14, 2026
aafe36b
Tier-2 batch-2b remainder: plan-cache-bloat + memory-pressure analysi…
erikdarlingdata Jul 14, 2026
9ef9493
Merge pull request #1521 from erikdarlingdata/feature/tier2-plancache…
erikdarlingdata Jul 14, 2026
712ef8a
Shell collapse PR0: capability-inventory pin (both apps) + fix stale …
erikdarlingdata Jul 14, 2026
f546d6c
Merge pull request #1522 from erikdarlingdata/feature/shell-collapse-…
erikdarlingdata Jul 14, 2026
354a9a8
Shell collapse Batch A: hoist SelectableItem to PerformanceMonitor.Ui
erikdarlingdata Jul 14, 2026
032ab73
Merge pull request #1523 from erikdarlingdata/feature/collapse-select…
erikdarlingdata Jul 14, 2026
1329788
Collapse duplicated FindParentDataGrid helpers into shared Performanc…
erikdarlingdata Jul 14, 2026
37e8d44
Merge pull request #1524 from erikdarlingdata/feature/collapse-findpa…
erikdarlingdata Jul 14, 2026
0251be1
Shell collapse: hoist file-save dialogs to Ui.FileSaveHelper
erikdarlingdata Jul 14, 2026
9a6a5cf
Merge pull request #1525 from erikdarlingdata/feature/collapse-xmlsave
erikdarlingdata Jul 14, 2026
4173a8a
Shell collapse: hoist stateful chart-render helpers to Ui.ChartRender…
erikdarlingdata Jul 14, 2026
a80f420
Merge pull request #1526 from erikdarlingdata/feature/collapse-charth…
erikdarlingdata Jul 14, 2026
a32b77a
Shell collapse: hoist System Events counter-chart bodies to Ui.System…
erikdarlingdata Jul 14, 2026
65af6b0
Merge pull request #1527 from erikdarlingdata/feature/collapse-syshealth
erikdarlingdata Jul 14, 2026
0e8450e
Front-end shell collapse: hoist the deadlock-graph per-process walk t…
erikdarlingdata Jul 14, 2026
077bbdc
Merge pull request #1528 from erikdarlingdata/feature/collapse-deadlo…
erikdarlingdata Jul 14, 2026
86fba4d
Collapse ColumnFilterPopup into shared PerformanceMonitor.Ui (Lite+Da…
erikdarlingdata Jul 14, 2026
ff579b9
Merge pull request #1529 from erikdarlingdata/feature/collapse-column…
erikdarlingdata Jul 14, 2026
d534508
Front-end shell collapse: hoist column-filter popup host plumbing to …
erikdarlingdata Jul 14, 2026
754e117
Merge pull request #1530 from erikdarlingdata/feature/collapse-filter…
erikdarlingdata Jul 14, 2026
7ca622a
Front-end shell collapse: hoist CPU-scheduler projection + pressure c…
erikdarlingdata Jul 15, 2026
8f43696
Merge pull request #1531 from erikdarlingdata/feature/collapse-cpusch…
erikdarlingdata Jul 15, 2026
cc182c0
Shell collapse: hoist CpuScheduler trend-chart render to Ui.CpuSchedu…
erikdarlingdata Jul 15, 2026
70fe265
Merge pull request #1532 from erikdarlingdata/feature/collapse-cpusch…
erikdarlingdata Jul 15, 2026
041ba3a
Shell collapse: hoist Session Stats chart + summary to Ui/Common
erikdarlingdata Jul 15, 2026
bb863f4
Merge pull request #1533 from erikdarlingdata/feature/collapse-sessio…
erikdarlingdata Jul 15, 2026
3ac622e
Collapse Latch/Spinlock grouped trend render into Ui.GroupedTrendChar…
erikdarlingdata Jul 15, 2026
74a8dec
Merge pull request #1534 from erikdarlingdata/feature/collapse-latchs…
erikdarlingdata Jul 15, 2026
85d4d3e
Shell collapse: hoist standalone Plan Viewer tab management to Ui.Sta…
erikdarlingdata Jul 15, 2026
8bfa717
Merge pull request #1536 from erikdarlingdata/feature/collapse-planvi…
erikdarlingdata Jul 15, 2026
f7332f5
Azure SQL DB: per-database deadlock + blocked-process XE capture (#13…
erikdarlingdata Jul 15, 2026
9e1fc36
Review fixes: capture-DB watermark stamp, all-failed escalation, recr…
erikdarlingdata Jul 15, 2026
529debf
Merge pull request #1537 from erikdarlingdata/feature/1535-azure-per-…
erikdarlingdata Jul 15, 2026
089f6e1
Darling viewer: port Lite's #422 TrayToolTip crash suppression (parity)
erikdarlingdata Jul 15, 2026
40b39b7
Charts: 15% top headroom (was 5%) so plateau-at-ceiling series don't …
erikdarlingdata Jul 15, 2026
0f0ac50
Plan Cache tab: drop the momentary Cache Object Type breakdown grid (…
erikdarlingdata Jul 16, 2026
7a2d44b
CHANGELOG: fill in PR number #1539 for the Plan Cache grid removal
erikdarlingdata Jul 16, 2026
e247905
Merge pull request #1538 from erikdarlingdata/feature/darling-traytoo…
erikdarlingdata Jul 16, 2026
9d200d4
Charts: finish the window-pin campaign (Collection Health duration ch…
erikdarlingdata Jul 16, 2026
e408855
CHANGELOG: fill in PR number (#1540) for the window-pin campaign entry
erikdarlingdata Jul 16, 2026
6a150c3
Merge pull request #1539 from erikdarlingdata/feature/plancache-drop-…
erikdarlingdata Jul 16, 2026
212af78
Darling viewer: restore descending-first sort on DarkGrid-styled grids
erikdarlingdata Jul 16, 2026
4e96649
Merge pull request #1540 from erikdarlingdata/feature/chart-window-pi…
erikdarlingdata Jul 16, 2026
9d422ba
Merge remote-tracking branch 'origin/dev' into feature/darling-grid-s…
erikdarlingdata Jul 16, 2026
d3c75bb
Rename plan-action verbs to end the "Actual" overload (both apps)
erikdarlingdata Jul 16, 2026
b42c873
Merge pull request #1541 from erikdarlingdata/feature/darling-grid-so…
erikdarlingdata Jul 16, 2026
67b2e2b
Darling viewer: fix query-tab plan menus (greying, wrong-row, Regress…
erikdarlingdata Jul 16, 2026
9075df7
Merge pull request #1542 from erikdarlingdata/feature/rename-plan-verbs
erikdarlingdata Jul 16, 2026
0bec9f9
Drop the Queries > Expensive Queries sub-tab (both apps); repoint the…
erikdarlingdata Jul 16, 2026
741147c
Merge pull request #1543 from erikdarlingdata/feature/darling-query-m…
erikdarlingdata Jul 16, 2026
ade2bef
Merge pull request #1544 from erikdarlingdata/feature/drop-expensive-…
erikdarlingdata Jul 16, 2026
d642a1b
Lite: put the plan verbs only on the query grids that support them
erikdarlingdata Jul 16, 2026
e0f547c
Merge pull request #1545 from erikdarlingdata/feature/lite-menu-cleanup
erikdarlingdata Jul 16, 2026
1cb348f
Query Store: attribute runtime stats to their replica role; tighten t…
erikdarlingdata Jul 16, 2026
448495f
Merge remote-tracking branch 'origin/dev' into feature/qs-replica-att…
erikdarlingdata Jul 16, 2026
a0cc63d
Fix the viewer schema probe for V28; make the config-path test hermetic
erikdarlingdata Jul 16, 2026
dfe29c9
Merge pull request #1546 from erikdarlingdata/feature/qs-replica-attr…
erikdarlingdata Jul 16, 2026
9eba816
NOC Overview: sort server tiles by CPU% descending with a persisted C…
erikdarlingdata Jul 16, 2026
26f5752
Index Analysis: absorb the sp_IndexCleanup review fixes the port pred…
erikdarlingdata Jul 16, 2026
3f08d72
ci: re-trigger after GitHub Actions incident (empty)
erikdarlingdata Jul 16, 2026
7cd3856
ci: re-trigger after GitHub Actions incident (empty)
erikdarlingdata Jul 16, 2026
1e53f88
Merge pull request #1547 from erikdarlingdata/feature/noc-overview-cp…
erikdarlingdata Jul 17, 2026
2c7b6b8
Merge remote-tracking branch 'origin/dev' into feature/index-dedup-re…
erikdarlingdata Jul 17, 2026
99edcd1
Merge pull request #1548 from erikdarlingdata/feature/index-dedup-rev…
erikdarlingdata Jul 17, 2026
43d8cd2
Add Multiple Servers: bulk paste-a-list onboarding with shared creden…
erikdarlingdata Jul 17, 2026
1331a15
Darling bulk add: freeze the paste box during the async add
erikdarlingdata Jul 17, 2026
e8d7303
Merge pull request #1549 from erikdarlingdata/feature/bulk-server-onb…
erikdarlingdata Jul 17, 2026
aacfdb3
Nightly builds: publish Darling service + viewer + pg-runtime zip
erikdarlingdata Jul 17, 2026
fc3b13f
Drop locked-mode restore for the service project (no lock file)
erikdarlingdata Jul 17, 2026
64c3c36
Merge pull request #1550 from erikdarlingdata/feature/nightly-darling…
erikdarlingdata Jul 17, 2026
78c0ea9
Nightly darling-pg job: initdb the throwaway cluster as role darling
erikdarlingdata Jul 17, 2026
e774260
Fix the five defects the first-ever darling-pg run exposed
erikdarlingdata Jul 17, 2026
3b58e7d
Fix V8 bare-name flake (pool artifact) + test the dispatched ref
erikdarlingdata Jul 17, 2026
a464bd9
Managed E2E: derive the LIVE max_worker_processes assertion too
erikdarlingdata Jul 17, 2026
87a50fa
Merge pull request #1551 from erikdarlingdata/feature/nightly-darling…
erikdarlingdata Jul 17, 2026
e585779
Darling tier-1 field-incident response: diagnostics, conf headroom, h…
erikdarlingdata Jul 17, 2026
bfdb300
Merge pull request #1552 from erikdarlingdata/feature/darling-diagnos…
erikdarlingdata Jul 17, 2026
cb45f16
Darling: bounded-parallel fire-and-track collection sweep + cadence j…
erikdarlingdata Jul 17, 2026
a0b87c5
Merge pull request #1553 from erikdarlingdata/feature/darling-paralle…
erikdarlingdata Jul 17, 2026
d800da2
Darling: scripted install/uninstall ships in the zip
erikdarlingdata Jul 17, 2026
9015c5e
Merge pull request #1554 from erikdarlingdata/feature/darling-install…
erikdarlingdata Jul 17, 2026
caa84bd
Collectors: bound query_store memory — byte budget, per-database flus…
erikdarlingdata Jul 17, 2026
4fccb3b
Review nit: truncation comment states the abandonment honestly
erikdarlingdata Jul 17, 2026
046ebe7
Merge pull request #1557 from erikdarlingdata/feature/collector-oom-b…
erikdarlingdata Jul 17, 2026
a22cdbe
Query Store: skip readable-secondary replicas (readonly_reason bit 8)
erikdarlingdata Jul 18, 2026
f0f1683
Fix: comment moved out of the dynamic SQL literal
erikdarlingdata Jul 18, 2026
f9bad7c
Merge pull request #1558 from erikdarlingdata/feature/qs-skip-replica…
erikdarlingdata Jul 18, 2026
2b67bed
Managed store: cap shared_buffers at 1GB (co-located sizing, v5) + po…
erikdarlingdata Jul 18, 2026
adc3340
Merge pull request #1559 from erikdarlingdata/feature/managed-pg-v5-c…
erikdarlingdata Jul 18, 2026
74e09ce
MCP: live enable/port from the control plane - no restart, no file edit
erikdarlingdata Jul 18, 2026
62ca1f5
Merge pull request #1560 from erikdarlingdata/feature/mcp-live-toggle
erikdarlingdata Jul 18, 2026
eaee99c
query_store: bound the self-exclusion scan; per-db log lines; rdsadmi…
erikdarlingdata Jul 18, 2026
a7e62d7
Canonical default screen for the Query Store enumeration
erikdarlingdata Jul 18, 2026
b3ba2d7
Self-exclusion moves client-side - no SQL text predicate at all
erikdarlingdata Jul 18, 2026
493d253
Merge pull request #1565 from erikdarlingdata/feature/qs-collector-costs
erikdarlingdata Jul 18, 2026
735f001
Cap the viewer's store pool (10) + document the postgres.exe anatomy
erikdarlingdata Jul 18, 2026
50caf5e
Merge pull request #1566 from erikdarlingdata/feature/pg-process-anatomy
erikdarlingdata Jul 18, 2026
2fb7e53
Gated purge tests: own-scoped assertions, no global activity counts
erikdarlingdata Jul 18, 2026
6e4fc37
Retention purge: time-sliced DELETE survives compressed chunks
erikdarlingdata Jul 18, 2026
9554480
Merge pull request #1567 from erikdarlingdata/feature/gated-purge-tes…
erikdarlingdata Jul 18, 2026
26d2798
Queries: attribute Top Queries rows to a named module or ad hoc (#1568)
erikdarlingdata Jul 18, 2026
855518f
Merge pull request #1569 from erikdarlingdata/feature/1568-query-modu…
erikdarlingdata Jul 18, 2026
a648818
Darling: --configure-network guided exposure wizard (#1561)
erikdarlingdata Jul 18, 2026
7f05593
CHANGELOG: correct the wizard PR anchor to #1570
erikdarlingdata Jul 18, 2026
a9a55d7
CHANGELOG: skipped-test count is 135 post-rebase (#1567 added a gated…
erikdarlingdata Jul 18, 2026
4038319
CHANGELOG: restore the #1569 attribution entry lost in the dev rebase
erikdarlingdata Jul 18, 2026
b8893ea
Merge pull request #1570 from erikdarlingdata/feature/1561-configure-…
erikdarlingdata Jul 18, 2026
bfec68b
Darling viewer: ship a Velopack Setup.exe for remote seats (#1555)
erikdarlingdata Jul 18, 2026
db0c472
Merge pull request #1571 from erikdarlingdata/feature/1555-velopack-d…
erikdarlingdata Jul 18, 2026
2af2852
Long-running query completion trace (opt-in XE) in Lite + Darling (#1…
erikdarlingdata Jul 18, 2026
428bc1e
Darling: reset long-query-trace applied-flag on (re)connect
erikdarlingdata Jul 18, 2026
d2a9321
Merge pull request #1572 from erikdarlingdata/feature/1496-long-query…
erikdarlingdata Jul 18, 2026
2f232cc
Darling Web foundation: second Kestrel host on 5153, live toggle (V29…
erikdarlingdata Jul 18, 2026
9b5a6d6
Darling Web data layer: /api/read/{tool} + pre-banded /api/fleet + un…
erikdarlingdata Jul 18, 2026
d213537
Darling Web: wire get_long_query_completions into /api/read (#1562)
erikdarlingdata Jul 18, 2026
93ad6ca
Darling Web frontend: fleet/server/alerts pages, SVG charts, no-CDN e…
erikdarlingdata Jul 18, 2026
b632f67
Darling Web: mention the web dashboard in the main README Darling int…
erikdarlingdata Jul 18, 2026
bee2411
Darling Web: design-review fixes — severity-safe chart palette, alert…
erikdarlingdata Jul 18, 2026
5a5a262
Darling Web: add y-axis unit caption to the CPU chart (#1562)
erikdarlingdata Jul 18, 2026
0a4818d
Darling Web: verdict-pass fixes - caption clear of top tick, collecto…
erikdarlingdata Jul 18, 2026
8789860
Lite pin: ratchet-list get_fleet_overview (Darling-only until the #15…
erikdarlingdata Jul 18, 2026
3651747
Darling Web: security-review hardening (Host allowlist, redirect guar…
erikdarlingdata Jul 18, 2026
0a5836a
Merge pull request #1574 from erikdarlingdata/feature/1562-darling-web
erikdarlingdata Jul 18, 2026
6611b79
Darling scheduler: seed NextDue from the collection watermark on conn…
erikdarlingdata Jul 18, 2026
b8e2663
Correct CHANGELOG PR reference to #1577 (issues/PRs share one sequence)
erikdarlingdata Jul 18, 2026
d69028c
Fix flaky SessionCookie_TamperedSignature_Fails (pre-existing #1562 d…
erikdarlingdata Jul 18, 2026
dcd9dee
Merge pull request #1577 from erikdarlingdata/feature/1575-scheduler-…
erikdarlingdata Jul 18, 2026
f20f3c8
Unify collector-health ROW banding + fix daily-collector false-positi…
erikdarlingdata Jul 18, 2026
af6c169
Merge pull request #1578 from erikdarlingdata/feature/1573-collector-…
erikdarlingdata Jul 18, 2026
cec09a0
Darling custom views backend: V31 store, narrow viewer grant, loopbac…
erikdarlingdata Jul 18, 2026
15cc487
Darling custom views frontend: view list, renderer, panel-grid editor…
erikdarlingdata Jul 18, 2026
75e0f92
Darling custom views: close CSRF/rebind on the loopback write path + …
erikdarlingdata Jul 18, 2026
dbe2ef7
Darling custom views: composer UX pass + renderer guards for field-le…
erikdarlingdata Jul 18, 2026
b5ccc5d
CHANGELOG: restore #1577/#1578 entries dropped by the -X theirs rebase
erikdarlingdata Jul 18, 2026
7e06770
Darling custom views: editing is any authenticated seat, not loopback…
erikdarlingdata Jul 18, 2026
d989689
Merge pull request #1576 from erikdarlingdata/feature/1563-custom-views
erikdarlingdata Jul 18, 2026
743e43a
Darling custom views v2: metric catalog + safe query compiler backend…
erikdarlingdata Jul 19, 2026
dc664e9
Darling custom views v2: fleet/multi-server + v2 viz vocabulary (#1563)
erikdarlingdata Jul 19, 2026
d778c03
Darling custom views v2: acceptance Flow A/B compile tests (#1563)
erikdarlingdata Jul 19, 2026
cc46b35
Darling custom views v2: B3 full catalog fill (#1563)
erikdarlingdata Jul 19, 2026
9a405b6
Darling custom views v2: B3 same-source ratio measures (#1563)
erikdarlingdata Jul 19, 2026
18c9d1b
Darling custom views v2: frontend metric composer + chart types (#1563)
erikdarlingdata Jul 19, 2026
de8c978
Darling custom views v2: CHANGELOG entry + compiler doc-comment fix (…
erikdarlingdata Jul 19, 2026
7d5cca3
Merge pull request #1579 from erikdarlingdata/feature/1563-custom-vie…
erikdarlingdata Jul 19, 2026
5218cb8
cv2 follow-ups Wave 1 backend: gauge ratios, stacked-bar, thresholds,…
erikdarlingdata Jul 19, 2026
9a0be75
cv2 follow-ups Wave 1 frontend: stacked-bar, thresholds, appliesTo ba…
erikdarlingdata Jul 19, 2026
47f3812
cv2 follow-ups Wave 1: CHANGELOG (#1563)
erikdarlingdata Jul 19, 2026
bce541b
Merge pull request #1580 from erikdarlingdata/feature/1563-cv2-followups
erikdarlingdata Jul 19, 2026
be7261f
Custom Views v2 D5: event annotations on time-series panels (#1563)
erikdarlingdata Jul 19, 2026
cf1356b
Custom Views v2 Wave 2 frontend: D5 annotation markers + D6 drill-dow…
erikdarlingdata Jul 19, 2026
8bdeb7f
cv2 follow-ups Wave 2: CHANGELOG (#1563)
erikdarlingdata Jul 19, 2026
27c28d0
Merge pull request #1582 from erikdarlingdata/feature/1563-cv2-wave2
erikdarlingdata Jul 19, 2026
a98765e
Custom Views v2 (#1563): notebook-mode backend validation (D7)
erikdarlingdata Jul 19, 2026
787d197
Custom Views v2 (#1563): surface view kind on the /api/views list sum…
erikdarlingdata Jul 19, 2026
8ba6f4a
Custom Views v2 notebook mode: frontend (#1563 D7)
erikdarlingdata Jul 19, 2026
2cfdeb4
cv2 notebook mode: CHANGELOG (#1563)
erikdarlingdata Jul 19, 2026
5090718
Notebook list cards: mark from summary kind synchronously (#1563 D7)
erikdarlingdata Jul 19, 2026
ea5a84f
Custom Views v2 (#1563): backend drift-guard for the seed notebook te…
erikdarlingdata Jul 19, 2026
41fd3ee
Merge pull request #1583 from erikdarlingdata/feature/1563-cv2-notebook
erikdarlingdata Jul 19, 2026
4106eed
Custom Views v2 (#1563): ship QS execution-weighted avg ratio + per-s…
erikdarlingdata Jul 19, 2026
9419fc2
Custom Views v2 (#1563): D4 per-server measure auto-greying in the co…
erikdarlingdata Jul 19, 2026
6130f15
cv2 leftovers: CHANGELOG (#1563)
erikdarlingdata Jul 19, 2026
9e72e9d
Darling service robustness: stuck-compression self-heal + arg/single-…
erikdarlingdata Jul 20, 2026
1374ab1
Review: deflake abandoned-mutex test (test-only) + CHANGELOG (#1581)
erikdarlingdata Jul 20, 2026
b1eb78f
Merge pull request #1584 from erikdarlingdata/feature/1563-cv2-leftovers
erikdarlingdata Jul 20, 2026
aa66b46
Merge remote-tracking branch 'origin/dev' into feature/1581-service-r…
erikdarlingdata Jul 20, 2026
34f962c
Merge pull request #1585 from erikdarlingdata/feature/1581-service-ro…
erikdarlingdata Jul 20, 2026
2b2ace7
Fix #1585 compression self-heal re-arm: alter_job job_id is integer (…
erikdarlingdata Jul 20, 2026
e0e73c9
Merge pull request #1586 from erikdarlingdata/feature/1581-rearm-inte…
erikdarlingdata Jul 20, 2026
05f1036
Fix gated-live compression test: -infinity can't be forced via alter_…
erikdarlingdata Jul 20, 2026
2617efe
Merge pull request #1588 from erikdarlingdata/feature/1581-gatedlive-…
erikdarlingdata Jul 20, 2026
8c2809f
Decouple SQL edition detection from sys.dm_os_sys_info (#1535)
erikdarlingdata Jul 20, 2026
3b31af4
Review fix: scope Dashboard detection reader closed before the start-…
erikdarlingdata Jul 20, 2026
f738434
Darling service #1581 field hardening: loud file-logging failures + c…
erikdarlingdata Jul 20, 2026
157d5f1
Merge pull request #1590 from erikdarlingdata/feature/1581-field-find…
erikdarlingdata Jul 20, 2026
f8e44ee
Merge remote-tracking branch 'origin/dev' into feature/1535-azure-edi…
erikdarlingdata Jul 20, 2026
297537a
Merge pull request #1589 from erikdarlingdata/feature/1535-azure-edit…
erikdarlingdata Jul 20, 2026
f36fb38
Decouple FinOps live inventory from sys.dm_os_sys_info; surface hardw…
erikdarlingdata Jul 20, 2026
8399f0d
Review: split malformed CHANGELOG link-ref
erikdarlingdata Jul 20, 2026
5ad4636
Darling: bound RegressedQueries to recent chunks; pin drill-down time…
erikdarlingdata Jul 20, 2026
2168918
Update RegressedQueries pin tests for the rewrite
erikdarlingdata Jul 20, 2026
04e6a57
Merge pull request #1593 from erikdarlingdata/feature/regressed-queri…
erikdarlingdata Jul 20, 2026
b17f5e1
Merge remote-tracking branch 'origin/dev' into feature/1535-finops-in…
erikdarlingdata Jul 20, 2026
8ef9387
Merge pull request #1592 from erikdarlingdata/feature/1535-finops-inv…
erikdarlingdata Jul 20, 2026
8235303
Darling: absent firewall rule is no longer a shutdown warning (#1594)
erikdarlingdata Jul 20, 2026
cf6e114
Merge pull request #1594 from erikdarlingdata/feature/firewall-disabl…
erikdarlingdata Jul 20, 2026
26c7765
Darling: pin that the credential lockdown leaves logs writable (#1596)
erikdarlingdata Jul 20, 2026
5c04d89
Merge pull request #1596 from erikdarlingdata/feature/acl-scope-inves…
erikdarlingdata Jul 20, 2026
1244d4a
Darling: split the sweep hang-watchdog from gate queue time (#1597)
erikdarlingdata Jul 20, 2026
4aba6e7
Merge pull request #1597 from erikdarlingdata/feature/sweep-hang-watc…
erikdarlingdata Jul 20, 2026
222bba9
CI: run the gated-live Darling PostgreSQL suite on PRs, not only nigh…
erikdarlingdata Jul 20, 2026
b3b70f4
Merge pull request #1598 from erikdarlingdata/feature/1587-pr-gated-live
erikdarlingdata Jul 20, 2026
7dcf7c8
CI: gate PR build/test/publish per product via the dependency graph (…
erikdarlingdata Jul 20, 2026
43bb560
Merge pull request #1599 from erikdarlingdata/feature/ci-path-gate-pr…
erikdarlingdata Jul 21, 2026
e67df9d
Darling MCP: create and manage Custom Views (CV2) over MCP
erikdarlingdata Jul 21, 2026
8d36fa0
Merge remote-tracking branch 'origin/dev' into feature/mcp-custom-views
erikdarlingdata Jul 21, 2026
967d0f7
Darling MCP custom-view live test: seed wait_stats + assert non-empty…
erikdarlingdata Jul 21, 2026
d3a3702
Merge pull request #1600 from erikdarlingdata/feature/mcp-custom-views
erikdarlingdata Jul 21, 2026
1b2080a
Darling: --enable/disable-mcp/web CLI verbs (headless endpoint bring-…
erikdarlingdata Jul 21, 2026
f12ae2c
Darling: CHANGELOG entry for #1601 (headless endpoint-toggle CLI verbs)
erikdarlingdata Jul 21, 2026
d312825
Darling README: document the headless endpoint-toggle verbs in the LA…
erikdarlingdata Jul 21, 2026
285ad5b
Darling MCP: describe_custom_view_catalog - compose vocabulary for LL…
erikdarlingdata Jul 21, 2026
7fe64b3
Also: correct the roles-ready log to mention the mcp config.custom_vi…
erikdarlingdata Jul 21, 2026
0f50d88
Fix cross-app MCP inventory pin: ratchet describe_custom_view_catalog…
erikdarlingdata Jul 21, 2026
2ef9592
Merge pull request #1602 from erikdarlingdata/feature/mcp-catalog-dis…
erikdarlingdata Jul 21, 2026
709f43b
Merge remote-tracking branch 'origin/dev' into feature/enable-endpoin…
erikdarlingdata Jul 21, 2026
83fd044
Merge pull request #1601 from erikdarlingdata/feature/enable-endpoint…
erikdarlingdata Jul 21, 2026
3ccc5ae
Darling.Tests: deterministically settle the compression self-heal tes…
erikdarlingdata Jul 21, 2026
bd8e355
Merge remote-tracking branch 'origin/dev' into feature/harden-compres…
erikdarlingdata Jul 21, 2026
c4fbded
CHANGELOG: compression self-heal gated-live flake fix (#1604)
erikdarlingdata Jul 21, 2026
e7ad6e4
Merge pull request #1604 from erikdarlingdata/feature/harden-compress…
erikdarlingdata Jul 21, 2026
c0341b4
Darling MCP: alert-tuning write tools (update_alert_settings, create/…
erikdarlingdata Jul 21, 2026
ba05a65
Merge pull request #1608 from erikdarlingdata/feature/mcp-alert-tuning
erikdarlingdata Jul 21, 2026
6179712
Darling MCP: bulk add/remove monitored servers (add_servers, remove_s…
erikdarlingdata Jul 21, 2026
f9f52c3
Merge pull request #1609 from erikdarlingdata/feature/mcp-add-server
erikdarlingdata Jul 21, 2026
c6d1aa0
Release v3.2.0: version bumps, changelog, README sync
erikdarlingdata Jul 21, 2026
3252347
Merge pull request #1610 from erikdarlingdata/release/v3.2.0
erikdarlingdata Jul 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
397 changes: 384 additions & 13 deletions .github/workflows/build.yml

Large diffs are not rendered by default.

181 changes: 179 additions & 2 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ jobs:
dotnet restore Lite/PerformanceMonitorLite.csproj --locked-mode
dotnet restore Installer/PerformanceMonitorInstaller.csproj --locked-mode
dotnet restore Lite.Tests/Lite.Tests.csproj --locked-mode
dotnet restore Darling/PerformanceMonitor.Darling.Viewer/PerformanceMonitor.Darling.Viewer.csproj --locked-mode

- name: Run tests
run: dotnet test Lite.Tests/Lite.Tests.csproj -c Release --verbosity normal
Expand All @@ -78,6 +79,34 @@ jobs:
- name: Publish CLI Installer
run: dotnet publish Installer/PerformanceMonitorInstaller.csproj -c Release

- name: Publish Darling Service
run: dotnet publish Darling/PerformanceMonitor.Darling.Service/PerformanceMonitor.Darling.Service.csproj -c Release -o publish/DarlingService

- name: Publish Darling Viewer
run: dotnet publish Darling/PerformanceMonitor.Darling.Viewer/PerformanceMonitor.Darling.Viewer.csproj -c Release -o publish/DarlingViewer

# Self-contained viewer publish that feeds the remote-seat Velopack Setup.exe (#1555), the same
# publish shape build.yml uses for the Dashboard/Lite Velopack packs. This is IN ADDITION to the
# framework-dependent "Publish Darling Viewer" above, which still feeds the co-located viewer\
# folder inside PerformanceMonitorDarling-*.zip — that zip is unchanged.
- name: Publish Darling Viewer (self-contained for Velopack)
run: dotnet publish Darling/PerformanceMonitor.Darling.Viewer/PerformanceMonitor.Darling.Viewer.csproj -c Release -r win-x64 --self-contained -o publish/DarlingViewer-velopack

# Same cache key as build.yml's release path: the fetch script's content hash (the SHA256
# pins live inside it). The ~340MB EDB/TimescaleDB fetch runs at most once per pin-set per
# branch; nightly and release runs share the assembled zip whenever the cache is visible.
- name: Cache Darling pg-runtime.zip
id: cache-pg-runtime
uses: actions/cache@v4
with:
path: Darling/artifacts/pg-runtime.zip
key: pg-runtime-${{ runner.os }}-${{ hashFiles('Darling/tools/fetch-pg-runtime.ps1') }}

- name: Build Darling pg-runtime.zip
if: steps.cache-pg-runtime.outputs.cache-hit != 'true'
shell: pwsh
run: ./Darling/tools/fetch-pg-runtime.ps1

- name: Package artifacts
shell: pwsh
run: |
Expand All @@ -102,10 +131,39 @@ jobs:

Compress-Archive -Path 'publish/Installer/*' -DestinationPath "releases/PerformanceMonitorInstaller-$version.zip" -Force

# Same layout as the release zip (build.yml "Package Darling (signed)"): service at the
# archive root with darling.sample.json alongside, viewer under viewer\, pg-runtime.zip
# beside the service exe where DarlingManagedPostgres extracts it on first run. Nightly
# zips are unsigned across the board, so this stages from publish/ instead of signed/.
$darlingDir = 'publish/Darling'
New-Item -ItemType Directory -Force -Path "$darlingDir/viewer" | Out-Null
Copy-Item 'publish/DarlingService/*' $darlingDir -Recurse
Copy-Item 'publish/DarlingViewer/*' "$darlingDir/viewer" -Recurse
Copy-Item 'Darling/artifacts/pg-runtime.zip' $darlingDir

Compress-Archive -Path 'publish/Darling/*' -DestinationPath "releases/PerformanceMonitorDarling-$version.zip" -Force

# Darling viewer remote-seat installer (#1555). Nightly ships it UNSIGNED like every other nightly
# artifact. Mirrors build.yml's release vpk pack (same pack id / exe / channel) but packs from the
# raw self-contained publish (no SignPath), and deliberately does NOT touch the Velopack update
# feed: the nightly GitHub release is deleted + recreated each night, so there is no persistent
# delta chain to `vpk download`/`vpk upload` from — we ship a standalone full Setup.exe as a plain
# release asset. Copied to a deterministic name so the checksum + upload steps below pick it up.
# Purely additive: the co-located viewer inside PerformanceMonitorDarling-*.zip is untouched.
- name: Create Darling Viewer Setup.exe (Velopack, unsigned)
shell: pwsh
run: |
$version = "${{ steps.version.outputs.VERSION }}"
dotnet tool install -g vpk --version 1.2.0
New-Item -ItemType Directory -Force -Path releases/velopack-darlingviewer
vpk pack -u PerformanceMonitorDarlingViewer -v $version -p publish/DarlingViewer-velopack -e PerformanceMonitor.Darling.Viewer.exe -o releases/velopack-darlingviewer --channel darlingviewer
$setup = Get-ChildItem releases/velopack-darlingviewer/*Setup.exe | Select-Object -First 1
Copy-Item $setup.FullName "releases/PerformanceMonitorDarlingViewer-$version-Setup.exe"

- name: Generate checksums
shell: pwsh
run: |
$checksums = Get-ChildItem releases/*.zip | ForEach-Object {
$checksums = Get-ChildItem releases/*.zip, releases/*.exe | ForEach-Object {
$hash = (Get-FileHash $_.FullName -Algorithm SHA256).Hash.ToLower()
"$hash $($_.Name)"
}
Expand Down Expand Up @@ -142,4 +200,123 @@ jobs:
--title "Nightly Build ($version)" `
--notes $body `
--prerelease `
releases/*.zip releases/SHA256SUMS.txt
releases/*.zip releases/*.exe releases/SHA256SUMS.txt

# Darling.Tests has live-PostgreSQL tests gated on env vars that the per-PR/push build never
# sets, so regular CI runs only the ungated subset. This job stands up a throwaway PostgreSQL
# from the bundled pg-runtime and runs the full Darling suite against it nightly, so the
# Postgres + managed-bootstrap paths get real coverage. The one live-SQL-Server E2E stays
# skipped (no SQL Server on the runner) — expected. Gated like the build job so it only runs
# when dev actually changed (or on manual dispatch).
darling-pg:
name: Darling PostgreSQL tests
needs: check
if: needs.check.outputs.has_changes == 'true' || github.event_name == 'workflow_dispatch'
runs-on: windows-latest

steps:
# Scheduled runs always test dev (schedules execute from the default branch, so ref_name
# would be main). A manual dispatch tests the DISPATCHED ref — the only way to validate a
# branch's gated-pg test changes before merge; the artifact-publishing build job stays
# pinned to dev either way, so a branch dispatch can never ship branch binaries.
- uses: actions/checkout@v5
with:
ref: ${{ github.event_name == 'workflow_dispatch' && github.ref_name || 'dev' }}

- name: Setup .NET 10.0
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x
cache: true
cache-dependency-path: '**/packages.lock.json'

# Darling bundles a PostgreSQL 18 + TimescaleDB runtime (pg-runtime.zip). The fetch script
# pulls ~340MB of pinned EDB/TimescaleDB archives, so cache the assembled zip on the SAME
# key build.yml's release job uses (the fetch script's own content hash) — nightly and
# release share one cache entry, so a warm cache means no download here.
- name: Cache Darling pg-runtime.zip
id: cache-pg-runtime
uses: actions/cache@v4
with:
path: Darling/artifacts/pg-runtime.zip
key: pg-runtime-${{ runner.os }}-${{ hashFiles('Darling/tools/fetch-pg-runtime.ps1') }}

- name: Build Darling pg-runtime.zip (cache miss only)
if: steps.cache-pg-runtime.outputs.cache-hit != 'true'
shell: pwsh
run: ./Darling/tools/fetch-pg-runtime.ps1

# One uniform path for hit and miss: we always have the zip (restored or freshly built),
# so always extract it — simpler than branching on the script's -KeepWork assembled tree.
# ExtractToDirectory mirrors the fetch script's own API and reads any zip it writes.
- name: Extract pg-runtime
shell: pwsh
run: |
$zip = "$env:GITHUB_WORKSPACE\Darling\artifacts\pg-runtime.zip"
$dest = "$env:GITHUB_WORKSPACE\Darling\artifacts\pg-runtime"
if (Test-Path $dest) { Remove-Item -Recurse -Force $dest }
Add-Type -AssemblyName System.IO.Compression.FileSystem
[System.IO.Compression.ZipFile]::ExtractToDirectory($zip, $dest)
if (-not (Test-Path "$dest\pgsql\bin\pg_ctl.exe")) { throw "pg-runtime missing pgsql\bin\pg_ctl.exe" }

- name: Restore Darling.Tests
run: dotnet restore Darling/Darling.Tests/Darling.Tests.csproj --locked-mode

- name: Build Darling.Tests
run: dotnet build Darling/Darling.Tests/Darling.Tests.csproj -c Release --no-restore

# Stand up a throwaway cluster from the bundled runtime. initdb TRUST auth is acceptable
# ONLY here: an ephemeral CI runner, loopback-only, throwaway data. The PRODUCT default is
# the opposite (scram-sha-256 + a generated credential; see DarlingManagedPostgres). The
# appended settings mirror DarlingManagedPostgres.BuildConfAppend (timescaledb preload —
# the Timescale-gated tests detect and use it — plus the port and loopback bind). Port 5541
# is fixed and distinct; the managed-bootstrap E2E starts its OWN postgres on a random free
# port, so there is no collision.
- name: Initialize and start throwaway PostgreSQL
shell: pwsh
run: |
$bin = "$env:GITHUB_WORKSPACE\Darling\artifacts\pg-runtime\pgsql\bin"
$dataDir = "$env:RUNNER_TEMP\darling-pgdata"
$logFile = "$env:RUNNER_TEMP\darling-pg.log"
# The bootstrap superuser is named "darling", not "postgres": the V8 schema-split
# migration runs CREATE SCHEMA ... AUTHORIZATION darling (PgSchemaGenerator.OwnerRole),
# so a cluster without that role fails every fresh-store migration. Matching managed
# mode's shape (DarlingManagedPostgres also initdbs its owner as "darling").
& "$bin\initdb.exe" -D $dataDir -U darling -A trust --encoding=UTF8
if ($LASTEXITCODE -ne 0) { throw "initdb failed ($LASTEXITCODE)" }
Add-Content -Path "$dataDir\postgresql.conf" -Value "shared_preload_libraries = 'timescaledb'"
Add-Content -Path "$dataDir\postgresql.conf" -Value "port = 5541"
Add-Content -Path "$dataDir\postgresql.conf" -Value "listen_addresses = '127.0.0.1'"
& "$bin\pg_ctl.exe" -D $dataDir -l $logFile -w start
if ($LASTEXITCODE -ne 0) { if (Test-Path $logFile) { Get-Content $logFile -Tail 50 }; throw "pg_ctl start failed ($LASTEXITCODE)" }
& "$bin\createdb.exe" -h 127.0.0.1 -p 5541 -U darling darling
if ($LASTEXITCODE -ne 0) { throw "createdb failed ($LASTEXITCODE)" }

# DARLING_TEST_PG lights up the [Collection("live-postgres")] classes; DARLING_TEST_PGRUNTIME
# lights up the managed-bootstrap E2E. DARLING_TEST_SQL is intentionally unset — the one
# live-SQL-Server E2E stays skipped (no SQL Server on the runner).
- name: Run Darling PG tests
shell: pwsh
env:
DARLING_TEST_PG: "Host=127.0.0.1;Port=5541;Username=darling;Database=darling"
DARLING_TEST_PGRUNTIME: ${{ github.workspace }}\Darling\artifacts\pg-runtime
run: dotnet test Darling/Darling.Tests/Darling.Tests.csproj -c Release --no-build --verbosity normal --logger "trx;LogFileName=darling-nightly.trx" --results-directory TestResults

- name: Stop PostgreSQL
if: always()
shell: pwsh
run: |
$bin = "$env:GITHUB_WORKSPACE\Darling\artifacts\pg-runtime\pgsql\bin"
$dataDir = "$env:RUNNER_TEMP\darling-pgdata"
if (Test-Path "$bin\pg_ctl.exe") { & "$bin\pg_ctl.exe" -D $dataDir -m fast -w stop }
exit 0

- name: Upload PG log and test results on failure
if: failure()
uses: actions/upload-artifact@v6
with:
name: darling-pg-failure
path: |
${{ runner.temp }}/darling-pg.log
TestResults/
if-no-files-found: ignore
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ obj/
publish/
releases/

# Darling bundled-Postgres runtime (built by Darling/tools/fetch-pg-runtime.ps1, never committed)
Darling/artifacts/

# Visual Studio
*.suo
*.user
Expand Down
Loading
Loading