Minor Changes
-
9c2c703: feat: Support PromQL dashboard tiles in the external API
/api/v2/dashboardsnow returns PromQL tiles and accepts them on create and update, asconfigType: "promql"with asourceIdand a list ofexpressions. Previously PromQL tiles were left out of responses, so saving a dashboard back through the API deleted them. MCP dashboard tools still hide PromQL tiles until they support editing them. -
eb72cfa: feat(mcp): add
clickstack_service_health, a one-call per-service health report for a trace source (throughput, error rate, p50/p95/p99, top error groups), compared with yesterday and ranked worst first -
95aef70: Add an optional
eventNameExpressionto log sources, pointing at the
OpenTelemetry log EventName. Source auto-detection sets it when an OTel log
table has a stringEventNamecolumn. The field is stored and editable only:
nothing reads it yet. HDX-5787 -
bc47e48: Add an optional
severityNumberExpressionto log sources, pointing at the
numeric OpenTelemetry SeverityNumber (1-24). Source auto-detection sets it when
an OTel log table has an integerSeverityNumbercolumn. The field is stored
and editable only: log levels still come from the severity text. -
cfa865b: feat: expose group-by values to webhook body templates as
{{var.<column>}}, and keep them on resolve notifications
Patch Changes
-
9891a79: feat: Add ad hoc dashboard filter schemas and types
-
27cccf7: fix: Reject creating or updating PromQL sources through the external API when PromQL is not enabled
POSTandPUT /api/v2/sourcesnow return a 400 forkind: "promql"unlessENABLE_PROMQLis set, since PromQL sources cannot be queried without it. -
8d064df: fix: Reject external API PromQL tiles that reference a non-PromQL source, and keep PromQL tiles when an MCP agent updates a dashboard
/api/v2/dashboardsnow returns a 400 when a PromQL tile'ssourceIdis not a PromQL source. MCPclickstack_save_dashboardupdates no longer delete the PromQL tiles that MCP hides from agents. -
0000fa4: feat: Add a line interpolation display setting (smooth, linear, step)
-
ee9f84b: feat(mcp): record the response size of each MCP tool call
-
24d324c: fix(mcp): store whereLanguage as lucene when clickstack_save_saved_search creates a search without one, so its alerts no longer parse a Lucene filter as SQL
-
748315d: feat(mcp): advertise a title, description, website URL, and SVG icon in the MCP server's initialize response
-
cdfae45: fix(mcp):
clickstack_sqlnow binds the bucket-size parameters its description
advertises.{intervalSeconds:Int64},{intervalMilliseconds:Int64},
$__interval_s,$__timeIntervaland$__timeInterval_msused to fail with
"Substitution intervalSeconds is not set", including the tool's own time-series
example. -
b00d410: feat(mcp):
clickstack_sqlaccepts an optionalsourceId, so$__sourceTable
expands to that source's table. Unknown sources, other teams' sources, and a
source on a different connection thanconnectionIdare rejected, as is
$__sourceTablewithout asourceId. -
a06b17f: fix(mcp): stop
clickstack_sqlcallers from guessing table and timestamp column
names.clickstack_list_sourcesnow returns each source's database-qualified
table(anddatabasefor metric sources), thesqlexamples use<table>
and<timestampColumn>placeholders instead ofotel_logsandTimestampTime,
and unknown-table errors fromclickstack_sqlpoint atclickstack_list_sources. -
e494a46: feat(mcp): declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint on every MCP tool
-
03f9fd5: fix(mcp): describe every MCP tool input, drop descriptions that restate schema constraints, and keep tool descriptions under Claude Code's 2 KB limit
-
5cabc11: feat: Support distribution heatmaps calculated from promql data
-
a4b6395: fix: render percentile aggregations (
p50,p90,p95,p99) asquantile
at the matching level. A chart config withaggFn: 'p95'rendered as the
nonexistent ClickHouse functionp95If. The AI assistant now returns
percentiles with a level instead of a barequantile(median), and v1 metric
chart conversion keeps the percentile level. -
ca8e3fd: fix: support https for the PromQL remote-write endpoint and ClickHouse scraping
CLICKHOUSE_PROMETHEUS_METRICS_ENDPOINTnow accepts anhttp://orhttps://URL as well as a barehost:port. Withhttps://, the collector'sprometheusremotewriteexporter sends metrics over TLS and verifies the server certificate against the system CAs. Previously the exporter always used plain HTTP, so an HTTPS-only endpoint could not receive metrics. This applies to both standalone and OpAMP-managed collectors.A bare
host:portkeeps plain HTTP, so existing setups are unchanged. The value must not include a path (/writeis still appended automatically); the collector now exits at startup with a clear error if it does, or if the scheme is anything other thanhttporhttps.The OpAMP-managed collector scraped the endpoint over plain HTTP regardless of its scheme. ClickHouse is now scraped in its own
clickhousejob (previously theotelcoljob) using the endpoint's scheme, with TLS verification on. The collector's own metrics endpoint stays on plain HTTP. A barehost:portorhttp://endpoint behaves as before. Scraped ClickHouse metrics now carryjob="clickhouse"instead ofjob="otelcol". -
c94d12c: fix: Resolve PromQL queries through the source instead of a caller-supplied connection and table
The
/api/v1/prometheus/*routes now takesourceIdinstead ofconnectionId, and read the connection and TimeSeries table from that PromQL source. Caller-supplieddatabase/tableparams are ignored for ClickHouse and no longer forwarded to external Prometheus endpoints. Saved PromQL chart configs now requiresourceand no longer persistconnection, so provisioned dashboards with PromQL tiles must setsource. -
be5304d: Forward the bytes consumed by the ClickHouse proxy's body parsers without
changing JSON values, form fields or text encodings. Keep request framing in
sync with inflated bytes and preserve unparsed multipart streams. -
af6e7f6: Add a description field to the tile editor. The description is now stored on the
tile's chart config next to its name, and is kept for series tiles in the
external Dashboards API. -
02080f2: Add an optional tile description, accepted by the external Dashboards API and
shown as an info tooltip next to the tile name. -
ce6654d: refactor: Store the time display setting as a time zone instead of a UTC switch, converting existing settings, and remove the
isUTCoption fromformatDate -
28168ae: fix: Floor the time filter start to the precision of a coarse timestamp column (DateTime, DateTime64 below ms) when a finer column also filters the range, so a sub-second start no longer drops the rest of that tick; make the external API v2 search
maxResultscap configurable viaEXTERNAL_API_SEARCH_MAX_RESULTS(defaults to 2000, the previous hardcoded value) -
ecddea2: fix: reject generic and incident.io webhook body templates that don't compile,
or that call a helper delivery doesn't register (e.g. a typo foreq), with a
400 on create, update, and test (internal API, External API v2, and MCP
clickstack_save_webhook). AddPOST /api/v2/webhooks/validateto check a
webhook config without saving it, e.g. at Terraform plan time. -
Updated dependencies [9205823]
-
Updated dependencies [3e9185d]
-
Updated dependencies [180a1f1]
-
Updated dependencies [a682ce1]
-
Updated dependencies [9891a79]
-
Updated dependencies [43b09a7]
-
Updated dependencies [0000fa4]
-
Updated dependencies [eb72cfa]
-
Updated dependencies [03f9fd5]
-
Updated dependencies [5cabc11]
-
Updated dependencies [a4b6395]
-
Updated dependencies [3bedfab]
-
Updated dependencies [c94d12c]
-
Updated dependencies [95aef70]
-
Updated dependencies [bc47e48]
-
Updated dependencies [85675fc]
-
Updated dependencies [af6e7f6]
-
Updated dependencies [02080f2]
-
Updated dependencies [dab6eb8]
-
Updated dependencies [ce6654d]
-
Updated dependencies [28168ae]
-
Updated dependencies [807cd9a]
-
Updated dependencies [cfa865b]
- @hyperdx/common-utils@0.32.0