Commit graph

1547 commits

Author SHA1 Message Date
Elizabet Oliveira
5162acb4ab
fix: apply correct color-scheme for light and dark modes so scrollbars match the active theme (#1818)
The `color-scheme` CSS property was hardcoded to `dark` on the root element, causing browser-native UI like scrollbars to always render in dark style regardless of the active theme. This moves `color-scheme` into the appropriate `[data-mantine-color-scheme]` selectors so it matches the user's selected theme.

> [!NOTE]
> This issue is only visible if you have your OS configured to always show scrollbars (macOS: System Settings → Appearance → Show scroll bars → Always).

## Before
<img width="3456" height="1834" alt="scrollbar-color-issue" src="https://github.com/user-attachments/assets/3d820ad6-3952-444b-9bac-f7c9d15e2bdc" />



## After
<img width="3456" height="1834" alt="scrollbar-color-fixed" src="https://github.com/user-attachments/assets/002fb0bd-72ee-47f7-9af7-e90faa41562b" />
2026-02-27 13:17:59 +00:00
Drew Davis
fedd586bba
feat: Remove potentially-sensitive fields from external webhooks API (#1816) 2026-02-27 13:55:45 +01:00
Aaron Knudtson
578b1eea9e
fix: stop localmode premature fetches & discover existing sources during onboarding (#1811)
In localmode and the clickhouse build, it is common to hit a scenario where a connection is not defined, but sources are. This causes the search page to start spamming queries without any credentials, which causes the browser to repeatedly show a prompt for auth credentials and kills the whole onboarding process. Additionally, after creating a connection in the onboarding modal, the sources were not discovered by the onboarding modal and would force you to redefine a source even though you had some saved. This PR fixes both of those issues.

Closes HDX-3515
Closes HDX-3516
2026-02-26 19:20:03 +00:00
Aaron Knudtson
a6edb0dd4c
fix: banner can collapse for clickhouse build (#1812) 2026-02-26 14:16:24 -05:00
Aaron Knudtson
875f78d484
fix: connections will now auto connect if default credentials work (#1808)
Adds an automatic way to create a connection if the default credentials work (username = default, password = '')

Closes HDX-3504
Closes HDX-3505
2026-02-26 15:37:19 +00:00
Drew Davis
34c9afebe2
feat: Add list Webhooks API (#1802)
Closes HDX-3450

# Summary

This PR adds a list webhooks endpoint to the external API, to better support alert creation via the API (which requires a webhook ID).

<img width="2275" height="1048" alt="Screenshot 2026-02-25 at 11 54 54 AM" src="https://github.com/user-attachments/assets/a9a4f1cb-d3e9-4d18-bb9c-6647b784adf9" />

<img width="1463" height="1057" alt="Screenshot 2026-02-25 at 11 55 45 AM" src="https://github.com/user-attachments/assets/b7864e67-b8d0-4f71-aedf-04d2d13e27f1" />
2026-02-26 12:20:45 +00:00
Karl Power
3e8cc729d1
chore: add missing number charts alerts changeset (#1810)
Add a forgotten changeset for the new feature in this PR https://github.com/hyperdxio/hyperdx/pull/1677
2026-02-26 10:52:52 +00:00
The Mavik
3797e657d5
fix: guard formatNumber against non-numeric values (#1721)
## Summary

Fixes #1510

**Root cause:** When a number format (e.g., Percent) is applied to table columns that contain non-numeric values, `formatNumber` doesn't catch non-empty strings. `numbro()` then produces NaN.

The existing check `!value && value !== 0` catches `null`, `undefined`, and `NaN`, but NOT non-empty strings (which are truthy and pass through to `numbro()`).

## Changes

- `packages/app/src/utils.ts`: Added `typeof value !== 'number' || isNaN(value)` guard that returns the raw value as a string instead of formatting it.

## Risk Assessment

**Low** - Only adds a guard for an edge case. Numeric values are formatted exactly as before.

Co-authored-by: Karl Power <85935352+karl-power@users.noreply.github.com>
2026-02-26 10:43:53 +00:00
Aditya Pimpalkar
4cb175d477
feat: add alert to Number chart (#1677)
Fixes #1361 

https://github.com/user-attachments/assets/c04980c3-5e28-4b6f-95fc-e7dc2d66427c

Co-authored-by: Karl Power <85935352+karl-power@users.noreply.github.com>
2026-02-26 10:09:01 +00:00
Rahul
ef66cba8cd
build(deps): add security resolutions for vulnerable npm packages (#1740)
## Summary

Addresses npm security vulnerabilities in transitive dependencies. Prefer direct dependency upgrades over broad resolutions where possible.

## Changes

**Direct upgrade:**
- **`@slack/webhook`**: `^6.1.0` → `^7.0.0` — v7 natively uses axios v1, eliminating the axios@0.21.4 SSRF/redirect vulnerabilities. Only breaking change in v7 is dropping Node <18 (we're on Node 22).

**Resolutions for transitive deps with no direct upgrade path:**
- **`fast-xml-parser`**: `^4.4.0` — fixes prototype pollution (High)
- **`systeminformation`**: `^5.24.0` — fixes command injection (High)

## Removed/Not Done

- `axios` resolution removed — covered by the `@slack/webhook` upgrade instead
- `tar` resolution removed — was a v6→v7 major jump on build-only tools (`cacache`, `node-gyp`); not present in the production image
- `glob` resolution removed — was breaking test coverage tooling (`test-exclude@6` depends on glob@^7)

## Related

Follow-up to #1731 which addressed base image vulnerabilities (Node, Go, ClickHouse).
2026-02-26 02:14:24 +00:00
Tom Alexander
733d612649
feat: Add saved query support to dashboards (#1584)
Fixes: HDX-1717

On the dashboard page, this PR adds:
* An option in the ... dropdown to Save/update/delete default query/filters that will save the WHERE input filter, along with any filters applied to the dashboard via the custom filter functionality + ties it to the dashboard object itself. Future reloads of this dashboard will restore saved values.



https://github.com/user-attachments/assets/5f7c18f7-a695-4d19-b338-6de852a4af6b



https://github.com/user-attachments/assets/ea7653c8-f862-450f-916c-46edfcbfbf35




Co-authored-by: Himanshu Kapoor <2203925+fleon@users.noreply.github.com>
2026-02-25 23:31:55 +00:00
Drew Davis
d760d2db5b
chore: Run integration tests on different ports (#1801)
# Summary

This PR updates the CI (integration tests) docker compose and env file so that the integration tests run on a separate set of ports, so that they can be run locally without interfering with an instance of the app running locally.

## Testing

To test locally

Start the app
```
yarn dev
```

Run the integration tests
```
make ci-int
```

Note that both can run at the same time without docker port conflicts. `make ci-int` can also be run without running the app - it uses its own independent mongo + clickhouse + api.
2026-02-25 20:52:17 +00:00
Drew Davis
247896e497
fix: Prevent crash when only one metric name exists (#1806)
Closes HDX-3511

# Summary

This PR fixes a crash that occurs when only one metric name is available. The actual fix is 1 character, and is noted in the comments. The rest of the changes are for unit testing the case and adding an error boundary around the chart editor component.

## Before

https://github.com/user-attachments/assets/e374b36b-0be3-468d-9469-3b1a5c88cd44

## After

https://github.com/user-attachments/assets/50004a07-b13e-4ff5-babb-952e391a8871

## New Error Boundary

If a similar error were to happen again, there is now an ErrorBoundary wrapping the chart editor, so there is no full page crash:

<img width="1757" height="865" alt="Screenshot 2026-02-25 at 3 15 13 PM" src="https://github.com/user-attachments/assets/a2eda617-efcf-4b41-8765-f586d285f50e" />
2026-02-25 20:22:30 +00:00
Tom Alexander
6708687a5b
chore: allow claude and claudebot to trigger review workflow (#1800)
Without this, the claude code review PR will fail if the PR is authored by claude.
2026-02-25 14:31:26 +00:00
Tom Alexander
6172230e9b
chore: separate e2e job (#1799)
for re-use in other jobs
2026-02-25 14:23:46 +00:00
Elizabet Oliveira
1eede5ed2e
fix: improve UI layout and styling in DBSearchPage and related components (#1798) 2026-02-25 13:29:43 +00:00
Alex Fedotyev
8b267371e0
feat: dynamically adjust Event Deltas chart count based on screen width (#1770)
Dynamically fills available horizontal space in the Event Deltas view by calculating the number of chart columns based on the container width. Also moves pagination to the bottom of the list and hides it when not needed.

Fixes #1769

Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-24 23:41:24 +00:00
Aaron Knudtson
8772f5e294
chore: update clickhouse version for compose files to 26.1 (#1791) 2026-02-24 15:24:43 -05:00
dependabot[bot]
81a3259074
chore(deps): bump lodash-es from 4.17.21 to 4.17.23 (#1638)
Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
<details>
<summary>Commits</summary>
<ul>
<li><a href="dec55b7a3b"><code>dec55b7</code></a> Bump main to v4.17.23 (<a href="https://redirect.github.com/lodash/lodash/issues/6088">#6088</a>)</li>
<li><a href="19c9251b36"><code>19c9251</code></a> fix: setCacheHas JSDoc return type should be boolean (<a href="https://redirect.github.com/lodash/lodash/issues/6071">#6071</a>)</li>
<li><a href="b5e672995a"><code>b5e6729</code></a> jsdoc: Add -0 and BigInt zeros to _.compact falsey values list (<a href="https://redirect.github.com/lodash/lodash/issues/6062">#6062</a>)</li>
<li><a href="edadd45214"><code>edadd45</code></a> Prevent prototype pollution on baseUnset function</li>
<li><a href="4879a7a7d0"><code>4879a7a</code></a> doc: fix autoLink function, conversion of source links (<a href="https://redirect.github.com/lodash/lodash/issues/6056">#6056</a>)</li>
<li><a href="9648f692b0"><code>9648f69</code></a> chore: remove <code>yarn.lock</code> file (<a href="https://redirect.github.com/lodash/lodash/issues/6053">#6053</a>)</li>
<li><a href="dfa407db0b"><code>dfa407d</code></a> ci: remove legacy configuration files (<a href="https://redirect.github.com/lodash/lodash/issues/6052">#6052</a>)</li>
<li><a href="156e1965ae"><code>156e196</code></a> feat: add renovate setup (<a href="https://redirect.github.com/lodash/lodash/issues/6039">#6039</a>)</li>
<li><a href="933e1061b8"><code>933e106</code></a> ci: add pipeline for Bun (<a href="https://redirect.github.com/lodash/lodash/issues/6023">#6023</a>)</li>
<li><a href="072a807ff7"><code>072a807</code></a> docs: update links related to Open JS Foundation (<a href="https://redirect.github.com/lodash/lodash/issues/5968">#5968</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/lodash/lodash/compare/4.17.21...4.17.23">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=lodash-es&package-manager=npm_and_yarn&previous-version=4.17.21&new-version=4.17.23)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/hyperdxio/hyperdx/network/alerts).

</details>
2026-02-24 19:03:37 +00:00
dependabot[bot]
3dd8a7b995
chore(deps): bump lodash from 4.17.21 to 4.17.23 (#1641)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
<details>
<summary>Commits</summary>
<ul>
<li><a href="dec55b7a3b"><code>dec55b7</code></a> Bump main to v4.17.23 (<a href="https://redirect.github.com/lodash/lodash/issues/6088">#6088</a>)</li>
<li><a href="19c9251b36"><code>19c9251</code></a> fix: setCacheHas JSDoc return type should be boolean (<a href="https://redirect.github.com/lodash/lodash/issues/6071">#6071</a>)</li>
<li><a href="b5e672995a"><code>b5e6729</code></a> jsdoc: Add -0 and BigInt zeros to _.compact falsey values list (<a href="https://redirect.github.com/lodash/lodash/issues/6062">#6062</a>)</li>
<li><a href="edadd45214"><code>edadd45</code></a> Prevent prototype pollution on baseUnset function</li>
<li><a href="4879a7a7d0"><code>4879a7a</code></a> doc: fix autoLink function, conversion of source links (<a href="https://redirect.github.com/lodash/lodash/issues/6056">#6056</a>)</li>
<li><a href="9648f692b0"><code>9648f69</code></a> chore: remove <code>yarn.lock</code> file (<a href="https://redirect.github.com/lodash/lodash/issues/6053">#6053</a>)</li>
<li><a href="dfa407db0b"><code>dfa407d</code></a> ci: remove legacy configuration files (<a href="https://redirect.github.com/lodash/lodash/issues/6052">#6052</a>)</li>
<li><a href="156e1965ae"><code>156e196</code></a> feat: add renovate setup (<a href="https://redirect.github.com/lodash/lodash/issues/6039">#6039</a>)</li>
<li><a href="933e1061b8"><code>933e106</code></a> ci: add pipeline for Bun (<a href="https://redirect.github.com/lodash/lodash/issues/6023">#6023</a>)</li>
<li><a href="072a807ff7"><code>072a807</code></a> docs: update links related to Open JS Foundation (<a href="https://redirect.github.com/lodash/lodash/issues/5968">#5968</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/lodash/lodash/compare/4.17.21...4.17.23">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=lodash&package-manager=npm_and_yarn&previous-version=4.17.21&new-version=4.17.23)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/hyperdxio/hyperdx/network/alerts).

</details>
2026-02-24 18:59:44 +00:00
dependabot[bot]
44af73a98b
build(deps): bump bn.js from 4.12.0 to 4.12.3 (#1793)
Bumps [bn.js](https://github.com/indutny/bn.js) from 4.12.0 to 4.12.3.
<details>
<summary>Commits</summary>
<ul>
<li><a href="39fe4389c7"><code>39fe438</code></a> 4.12.3</li>
<li><a href="67ecb35dab"><code>67ecb35</code></a> backport(4.x): fix imaskn state (<a href="https://redirect.github.com/indutny/bn.js/issues/317">#317</a>)</li>
<li><a href="c4098bac24"><code>c4098ba</code></a> 4.12.2</li>
<li><a href="6277fd705e"><code>6277fd7</code></a> backport(4.x): Fix imuln/muln with zero (backport of <a href="https://redirect.github.com/indutny/bn.js/issues/313">#313</a>) (<a href="https://redirect.github.com/indutny/bn.js/issues/314">#314</a>)</li>
<li><a href="ac0d4afaae"><code>ac0d4af</code></a> 4.12.1</li>
<li><a href="a5f14b43ec"><code>a5f14b4</code></a> Fix serious issue in <code>.toString(16)</code> (<a href="https://redirect.github.com/indutny/bn.js/issues/309">#309</a>)</li>
<li><a href="0cd2661b9d"><code>0cd2661</code></a> Remove package-lock.json added by npm</li>
<li>See full diff in <a href="https://github.com/indutny/bn.js/compare/v4.12.0...v4.12.3">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bn.js&package-manager=npm_and_yarn&previous-version=4.12.0&new-version=4.12.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/hyperdxio/hyperdx/network/alerts).

</details>
2026-02-24 18:55:50 +00:00
Tom Alexander
2fa3352a3d
chore: update claude pr review gh action to use sticky comment (#1795) 2026-02-24 18:02:31 +00:00
Tom Alexander
5474409317
fix: AI Notebook CH connections need to send pw (#1792)
A user reported that they could not use the Notebooks feature due to a random clickhouse connection failure, pointing to a bad password. https://discord.com/channels/1149498480893640706/1149500035403350036/1473446917198315563

The reason it failed was because we weren't selecting the pw in `mongo` prior to using it in a direct `CH` connection. 

Before the fix, the call in `getAIMetadata` omitted the `selectPassword` argument:
`const connection = await getConnectionById(source.team.toString(), connectionId); // connection.password === undefined`

So when the ClickhouseClient was constructed immediately after:
```
const clickhouseClient = new ClickhouseClient({ host: connection.host, username: connection.username, password: connection.password,  });
```

`connection.password` was undefined, and the ClickHouse client connected with no password — hence the authentication failure.

The fix just adds `true` so the password is actually fetched from MongoDB and present in connection.password when the client is constructed.
2026-02-24 15:08:55 +00:00
Aaron Knudtson
cd2b7a7615
fix: use_top_k_dynamic_filtering setting causing issues when ORDER BY is not a column (#1789) 2026-02-24 13:50:42 +00:00
github-actions[bot]
9488421ac6
Release HyperDX (#1777)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-24 06:21:31 +01:00
Warren Lee
738d922dc0
ci: update notify_helm_charts target to ClickHouse/ClickStack-helm-charts (#1786)
## Summary
- Update `notify_helm_charts` workflow to target `ClickHouse/ClickStack-helm-charts` repo
- Switch auth token from `HYPERDX_INTERNAL_TOKEN` to `CH_BOT_PAT`

Ref: HDX-3485
2026-02-24 05:02:13 +00:00
Warren Lee
2c306b690d
fix: support tcp with TLS (port 9440) for otelcol migrator (#1783)
## Summary
- Add support for TLS-enabled ClickHouse endpoints in otelcol migrator (`tcps://`, `tls://`, `clickhouse://` schemes)
- Support `?secure=true` query parameter to override TLS setting on any scheme
- Default TLS port to `9440` for `tcps`/`tls` schemes
- Improve error message for unsupported schemes to list valid options

## Test plan
- Added tests for `clickhouse://`, `tcps://`, `tls://` schemes with default and custom ports
- Added tests for `?secure=true` query param on `tcp` and `http` schemes
- Added test verifying `?secure=false` is a no-op

Docs: https://clickhouse.com/docs/guides/sre/network-ports

Ref: HDX-3490
2026-02-24 00:07:56 +00:00
rajin
575779d2d0
fix : Support JSON type in Surrounding Context. (#1652)
Fixes https://github.com/hyperdxio/hyperdx/issues/983

This issue was closed as not planned, but I think the solution is simple enough that it should be considered for merging.

row data has `__hdx_resource_attributes` (which is `ROW_DATA_ALIASES.RESOURCE_ATTRIBUTES`) and it is flattened so that it could be used for both map and json type.
2026-02-23 16:10:15 +00:00
Drew Davis
b5bb69e37c
feat: Improve pie chart implementation (#1773)
Closes HDX-3479

# Summary

This PR makes a number of improvements to new pie chart implementation (#1704)

1. Pie charts are now limited to 1 series. Previously, the pie chart summed the values of each series by group, and used the sum as the slice value. This is non-obvious and probably not what users expect. With a one-series limit, this problem is eliminated. Further, the logic for formatting the pie chart data from the clickhouse response is dramatically simpler.
2. Slices are now ordered by value decreasing, to avoid randomly changing slice order on refresh
3. Instead of being randomly generated, slice colors are now consistent with the theme colors and auto-detect log and trace severity levels, matching line/bar chart behavior
4. The external dashboards API now supports reading and writing pie charts. The transformation code has been updated so that there will be a type error if any new chart types are added in the future without updating the external API code.
5. The pie chart's tooltip now matches the style of the line chart tooltip, and is updated appropriately based on the app theme and light/dark mode.
6. The chart's number format is now applied to values in the pie chart tooltip
7. Slice labels are now correctly populated when a map is accessed in the Group By (eg. when grouping by `ResourceAttributes['app']`, the slice labels include the `app` value instead of being empty).
8. Also, added some unit tests for the pie chart data transformation, and moved it to ChartUtils with the other similar chart data transformation code.
2026-02-23 16:04:26 +00:00
Drew Davis
e55b81bce7
fix: Support light-mode in tagging dropdown menu (#1778)
Closes HDX-3472

# Summary

This PR fixes the tagging drop-down menu background so that it is light when in light mode.

## Before

<img width="263" height="248" alt="Screenshot 2026-02-23 at 10 06 59 AM" src="https://github.com/user-attachments/assets/94b64bee-153c-46f1-9053-665d1ad2a3f9" />

## After

<img width="271" height="216" alt="Screenshot 2026-02-23 at 10 37 23 AM" src="https://github.com/user-attachments/assets/d45e9f37-8e1f-47a9-beae-65c3cbba8aba" />
<img width="266" height="345" alt="Screenshot 2026-02-23 at 10 49 21 AM" src="https://github.com/user-attachments/assets/08e294e2-f0a0-4317-8701-57b9722ca60c" />
2026-02-23 15:56:33 +00:00
Brett Adams
cbe319c03a
fix: resolve "no query support for metric type" error in external API (#1708)
## Summary

- Fix external API `POST /api/v2/charts/series` returning `"no query support for metric type=gauge"` when `field` is passed without `metricName`
- When querying metric sources, the API now falls back to using `field` as the `metricName` and defaults `valueExpression` to `'Value'` (the ClickHouse column), matching how the dashboard UI builds chart configs
- Backward compatible: when both `metricName` and `field` are provided, behavior is unchanged

## Root Cause

`buildChartConfigFromRequest()` mapped `field` to `valueExpression` but never populated `metricName` from it. Downstream, `translateMetricChartConfig()` requires both `metricType` AND `metricName` to be truthy — when `metricName` was undefined, it fell through to the catch-all error.

## Test plan

- [ ] Added integration tests for gauge, sum, and histogram metrics using `field` without `metricName`
- [ ] Verify existing metric tests still pass (backward compatible — passing both `metricName` and `field` works as before)
- [ ] Verify non-metric source queries are unaffected

Related: https://github.com/hyperdxio/hyperdx/issues/1418, https://github.com/hyperdxio/hyperdx/issues/1214

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <81847+claude@users.noreply.github.com>
2026-02-23 15:05:52 +00:00
Aaron Knudtson
8326fc6e9b
feat: add optimization settings to all queries if available (#1753)
Adds several optimizations that helps immensely with search query duration. On our own data we've seen a 2-3x improvement, for extremely large log tables we've seen a 50x improvement

Closes HDX-3429
2026-02-23 14:18:04 +00:00
Elizabet Oliveira
8a45c5123d
feat(app): add system color scheme option and make it the default (#1776) 2026-02-23 13:35:39 +00:00
github-actions[bot]
d1288cf67b
Release HyperDX (#1752)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-21 07:08:56 +01:00
Aaron Knudtson
4f1da03273
fix: local mode shouldnt send authorization header from browser challenge (#1771)
Closes HDX-3477
2026-02-20 20:38:37 +00:00
Elizabet Oliveira
e984e20e69
feat(app): theme-based branding in UI copy (#1768)
## Summary
Replace hardcoded "HyperDX" in user-facing UI with the current theme's display name so deployments using the ClickStack theme show "ClickStack" (e.g. "Welcome to ClickStack", "ClickStack Cloud") instead of "HyperDX".

Closes HDX-3463.

## Changes

### Theme
- **ThemeProvider**: Add `useBrandDisplayName()` hook that returns `theme.displayName` ("HyperDX" or "ClickStack") for use in copy.

### Pages & layout
- **Auth**: Login/register page title and brand label use `useBrandDisplayName()`.
- **AuthLoadingBlocker**: "Loading HyperDX" → "Loading {brandName}".
- **JoinTeamPage**: Document title uses brand name.
- **LandingHeader**: "HyperDX Cloud" → "{brandName} Cloud" (desktop and mobile). Active link color scheme updated for theme consistency.
- **Spotlights**: Cloud action label and description use brand name.
- **Page titles**: All `<Head><title>` now suffix with current brand (Dashboard, Search, Client Sessions, Chart Explorer, My Team, Create a Dashboard, Alerts, DBDashboardImportPage).

### Copy and errors
- **OnboardingModal**: Welcome title and demo server success/error messages use brand name.
- **DBSearchPageAlertModal**, **WebhooksSection**, **TeamMembersSection**, **WebhookForm**: "Please contact HyperDX team" → "Please contact {brandName} team".
- **SessionsPage**: Empty state and setup instructions ("HyperDX integration", "HyperDX Otel Collector", "HyperDX Browser Integration") use brand name.
- **TeamPage**: ClickHouse settings tooltip about windowed queries uses brand name.
- **DBChartPage**: AI Assistant alert text ("on the HyperDX server") and Chart Explorer title use brand name.
- **SourceForm**: All help text that referred to "HyperDX" (materialized view tooltip, correlated source labels, metrics "not yet fully supported") use brand name.
- **HDXMultiSeriesTableChart**: CSV export filename "HyperDX_table_results" → "{brandName}_table_results".

## Testing
- With default/HyperDX theme: all existing strings should still read "HyperDX".
- With ClickStack theme (e.g. `NEXT_PUBLIC_THEME=clickstack` or dev theme override): titles, welcome text, errors, and help text should show "ClickStack" where appropriate.

## Notes
- No changes to SDK imports, type names (e.g. `HyperDXEventType`), or theme definition files.
- Brand is deployment-configured via `NEXT_PUBLIC_THEME`; in dev, theme can be switched for verification.
2026-02-20 18:48:23 +00:00
Karl Power
38286f6766
fix: searching json number property error (#1767) 2026-02-20 19:04:23 +01:00
Aditya Pimpalkar
051276fc17
feat: add pie chart as dashboard tile (#1704)
Co-authored-by: Aaron Knudtson <87577305+knudtty@users.noreply.github.com>
2026-02-20 11:00:58 -05:00
Tom Alexander
185d4e4008
fix: Add option to display all events in search histogram bars (#1765)
Fixes: HDX-3456

Before:
<img width="215" height="254" alt="image" src="https://github.com/user-attachments/assets/54605b58-41d1-4851-b0eb-470076ad7f2e" />

After:
<img width="268" height="291" alt="image" src="https://github.com/user-attachments/assets/661a95f7-59a7-4ca5-afe4-9b4d20a9539a" />
2026-02-20 15:10:09 +00:00
Drew Davis
b676f268d9
feat: Add config property to external dashboard APIs. Deprecate series. (#1763) 2026-02-20 08:48:25 -05:00
Tom Alexander
90a733aab8
fix: allow claude PR review for all contributors (#1762)
Known limitation from the official workflow. See https://github.com/anthropics/claude-code-action/pull/614 for inspiration for this change.
2026-02-19 20:52:01 +00:00
Warren Lee
36da6ff4d8
chore: resolve collector CVE-2025-15467 (#1761) 2026-02-19 11:45:50 -08:00
Himanshu Kapoor
18e9690461
fix: update required fields in our spec (#1758)
1. `source` isn't actually required on an alert. It is non-nullable, but has a default value of `saved_search` if omitted.
2. `whereLanguage` is actually a required input.
2026-02-19 18:10:51 +00:00
Tom Alexander
ec54757e1d
feat: Add confirm dialog when closing tile editor w/ changes (#1746)
Fixes: HDX-3201

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-19 18:07:20 +00:00
Himanshu Kapoor
3c1511d6f6
Revert "fix: set min-height on charts to fix flex shrink issues" (#1759)
Reverts hyperdxio/hyperdx#1756
2026-02-19 18:02:48 +00:00
Aaron Knudtson
7d0282c188
fix: require checkout before env load (#1760) 2026-02-19 12:57:00 -05:00
Himanshu Kapoor
6465a67113
Add allowed_bots parameter to Claude review action (#1757)
So that claude code reviews work on PRs authored by Cursor
2026-02-19 16:32:25 +00:00
Himanshu Kapoor
454739a712
fix: set min-height on charts to fix flex shrink issues (#1756)
Fixes [HDX-3123](https://linear.app/clickhouse/issue/HDX-3123/notebook-tile-overflow-bug)
2026-02-19 15:14:23 +00:00
Drew Davis
5988850a64
fix: Prevent sampled events error when HAVING clause is specified (#1755)
Closes HDX-3442

# Summary

This PR fixes an error in the sampled events panel when a HAVING clause is specified. To fix the error, the HAVING clause is removed from the sampled events config, similar to how the GROUP BY is removed.

## Before

<img width="1498" height="1251" alt="Screenshot 2026-02-19 at 7 33 19 AM" src="https://github.com/user-attachments/assets/6f5ca4d3-7954-4e74-86cc-a335663ca299" />

## After

<img width="1496" height="1272" alt="Screenshot 2026-02-19 at 7 33 32 AM" src="https://github.com/user-attachments/assets/f05101a5-e88f-4a6f-966a-e387c79b96d0" />
2026-02-19 14:14:55 +00:00
Elizabet Oliveira
fa2424da75
refactor: update SVG structure and styling for ClickStack and HyperDX favicons (#1750)
- Simplified SVG markup for both favicons by removing redundant elements and improving readability.
- Updated clipPath definitions and ensured consistent styling for light and dark modes.
- Enhanced compatibility with modern SVG standards.
2026-02-19 12:06:46 +00:00