@hyperdx/common-utils@0.26.0
Minor Changes
- fd54ac7: Persist alert evaluation errors (query errors, timeouts, webhook failures) as
ERROR-state AlertHistory records instead of only a latest-only snapshot,
upserted per evaluation window so retries collapse into a single row. Query
timeouts are classified separately (QUERY_TIMEOUT, including timeouts wrapped
by the ClickHouse query client) with an actionable message. ERROR rows are
excluded from scheduling/backfill computations so failed windows are still
retried and backfilled, and once a failed window recovers (via a same-window
retry or a later tick's backfill) its stale ERROR row is removed. Evaluation
analytics (query/webhook durations, backfilled buckets) are recorded on every
history row. - 05a3fd8: Add the AlertHistory evaluations read model and GET /alerts/:id/evaluations
endpoint: per-window evaluation history scoped to a time range (clamped to the
retention window) with per-group breakdown for group-by alerts, evaluation
analytics fields, deduped error surfacing for ERROR-state windows, and
cursor-based pagination that always advances across gaps. Adds read-side
schema/type support for ERROR-state AlertHistory rows and evaluation analytics. - 8508b6c: Terraform export now emits team-scoped import ids (
<team_id>/<resource_id>),
so resources can be imported from a ClickStack deployment that backs more than
one team. Each imported resource gains ateamattribute, which the provider
marks as forcing replacement — the generated file now says to keep it. The
provider floor moves to>= 3.25.0, which drops server-only dashboard ids when
importing, so the generated dashboard config no longer churns tile ids (and the
tile alerts attached to them) on apply. - 0ed72dd: Add the metric formula expression model: a
formulasentry on chart configs (letter-based series refs —A,B,Cmap toselectpositions) plus an arithmetic-only parser/validator (core/formula.ts) that produces a validated AST and structured validation errors (unknown series ref, empty expression, malformed syntax, invalid tokens). Groundwork for metric formulas likeA / (A + B + C) * 100; no query rendering or UI changes yet.
Patch Changes
-
b9430a6: feat: Add broadcast and variable settings to dashboard filters
-
546dd44: feat: Improve SQL Editor validations and autocomplete for variables
-
cab98c7: feat: Substitute dashboard variables in raw SQL tiles
-
018a648: Clean up ESLint warnings and tighten lint enforcement. Resolved all
no-unused-varsand@typescript-eslint/ban-ts-commentwarnings (removing dead
code and converting@ts-ignoreto described@ts-expect-error), then promoted
those rules toerrorin the api/app/common-utils/cli/hdx-eval configs, disabled
the noisy@typescript-eslint/no-empty-functionrule in app, and lowered each
package's--max-warningsceiling so the counts can't regress. Behavior is
unchanged. -
2d33b83: Escape the Map subscript once in numeric and Bool field searches
The three equality branches for
Booland numeric value types escaped the
column expression as an identifier even when it was already a rendered map
subscript, soMeasures.latency_ms:250wrapped`Measures`['latency_ms']
in a second layer of backticks that ClickHouse reads as one identifier rather
than a map lookup. Quoting the term worked around it for numeric maps; for
Map(String, Bool)columns both spellings were affected. -
aedb514: Multi-series metric charts now run as a single composed ClickHouse query instead of one query per series joined client-side. The per-series queries are combined via UNION ALL and pivoted back into one row per (group, time bucket) in SQL, including ratio charts (
seriesReturnType: 'ratio') and bothratioModevariants, which previously divided the two result sets in the browser/node. Result shape, column naming (including same-alias__{index}disambiguation), gap semantics, and ratio semantics are unchanged; charts with many series render with fewer round trips, and "View SQL" for multi-series metric charts now shows the full query instead of only the first series.