This PR fixes: HDX-1641
The Linear issue only mentions:
> The Run button on the Markdown form doesn't do anything
However, in **Charts Explorer → Markdown**, the time picker also wasn’t working. I’ve removed it as well.
<img width="2681" height="2048" alt="image" src="https://github.com/user-attachments/assets/6f6b7fc5-544f-43e2-ab9d-05894f83e8d6" />
When using a trace table with the default otel schema of `ServiceName, SpanName, toDateTime(Timestamp)`, we currently return a blank order by which breaks sorting in search page.
Instead, if we fail to optimize the order by based on the primary key, we should just return a default value instead of an empty value.
Closes HDX-2283
This adds an environment variable `INGESTION_API_KEY` that can be set by the user. This apiKey will be valid and accepted by the Otel collector. It is in addition to the autogenerated apiKey and will not show in the team settings apiKey section.
- Fixed the issue where the @clickhouse/client module wasn’t bundled. It’s also cleaner to keep non-shared methods decoupled between node and browser environments
- Bumped the default request timeout to 1hr
Ref: HDX-2294
Include the explicit select of the password field since the mongoose schema omits it by default. Includes test cases to verify the password against the mongo instance running in the test suite and an additional error check.
Allows user defined concurrency limit when evaluating check alert tasks. Includes some further refinements of the task execution types to make actual task execution more type safe.
Bumps [cipher-base](https://github.com/crypto-browserify/cipher-base) from 1.0.4 to 1.0.6.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/browserify/cipher-base/blob/master/CHANGELOG.md">cipher-base's changelog</a>.</em></p>
<blockquote>
<h2><a href="https://github.com/browserify/cipher-base/compare/v1.0.5...v1.0.6">v1.0.6</a> - 2024-11-26</h2>
<h3>Commits</h3>
<ul>
<li>[Fix] io.js 3.0 - Node.js 5.3 typed array support <a href="b7ddd2ac24"><code>b7ddd2a</code></a></li>
</ul>
<h2><a href="https://github.com/browserify/cipher-base/compare/v1.0.4...v1.0.5">v1.0.5</a> - 2024-11-17</h2>
<h3>Commits</h3>
<ul>
<li>[Tests] standard -> eslint, make test dir, etc <a href="ae02fd6624"><code>ae02fd6</code></a></li>
<li>[Tests] migrate from travis to GHA <a href="66387d7146"><code>66387d7</code></a></li>
<li>[meta] fix package.json indentation <a href="5c02918ac5"><code>5c02918</code></a></li>
<li>[Fix] return valid values on multi-byte-wide TypedArray input <a href="8fd136432c"><code>8fd1364</code></a></li>
<li>[meta] add <code>auto-changelog</code> <a href="88dc806806"><code>88dc806</code></a></li>
<li>[meta] add <code>npmignore</code> and <code>safe-publish-latest</code> <a href="7a137d749c"><code>7a137d7</code></a></li>
<li>Only apps should have lockfiles <a href="42528f291d"><code>42528f2</code></a></li>
<li>[Deps] update <code>inherits</code>, <code>safe-buffer</code> <a href="0e7a2d9a33"><code>0e7a2d9</code></a></li>
<li>[meta] add missing <code>engines.node</code> <a href="f2dc13e47b"><code>f2dc13e</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="f5249f9461"><code>f5249f9</code></a> v1.0.6</li>
<li><a href="b7ddd2ac24"><code>b7ddd2a</code></a> [Fix] io.js 3.0 - Node.js 5.3 typed array support</li>
<li><a href="f03cebfdad"><code>f03cebf</code></a> v1.0.5</li>
<li><a href="88dc806806"><code>88dc806</code></a> [meta] add <code>auto-changelog</code></li>
<li><a href="7a137d749c"><code>7a137d7</code></a> [meta] add <code>npmignore</code> and <code>safe-publish-latest</code></li>
<li><a href="5c02918ac5"><code>5c02918</code></a> [meta] fix package.json indentation</li>
<li><a href="8fd136432c"><code>8fd1364</code></a> [Fix] return valid values on multi-byte-wide TypedArray input</li>
<li><a href="66387d7146"><code>66387d7</code></a> [Tests] migrate from travis to GHA</li>
<li><a href="f2dc13e47b"><code>f2dc13e</code></a> [meta] add missing <code>engines.node</code></li>
<li><a href="0e7a2d9a33"><code>0e7a2d9</code></a> [Deps] update <code>inherits</code>, <code>safe-buffer</code></li>
<li>Additional commits viewable in <a href="https://github.com/crypto-browserify/cipher-base/compare/v1.0.4...v1.0.6">compare view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a href="https://www.npmjs.com/~ljharb">ljharb</a>, a new releaser for cipher-base since your current version.</p>
</details>
<br />
[](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>
Bumps [sha.js](https://github.com/crypto-browserify/sha.js) from 2.4.11 to 2.4.12.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/browserify/sha.js/blob/master/CHANGELOG.md">sha.js's changelog</a>.</em></p>
<blockquote>
<h2><a href="https://github.com/browserify/sha.js/compare/v2.4.11...v2.4.12">v2.4.12</a> - 2025-07-01</h2>
<h3>Commits</h3>
<ul>
<li>[eslint] switch to eslint <a href="7acadfbd3a"><code>7acadfb</code></a></li>
<li>[meta] add <code>auto-changelog</code> <a href="b46e7116eb"><code>b46e711</code></a></li>
<li>[eslint] fix package.json indentation <a href="df9d521e16"><code>df9d521</code></a></li>
<li>[Tests] migrate from travis to GHA <a href="c43c64adc6"><code>c43c64a</code></a></li>
<li>[Fix] support multi-byte wide typed arrays <a href="f2a258e9f2"><code>f2a258e</code></a></li>
<li>[meta] reorder package.json <a href="d8d77c0a72"><code>d8d77c0</code></a></li>
<li>[meta] add <code>npmignore</code> <a href="35aec35c66"><code>35aec35</code></a></li>
<li>[Tests] avoid console logs <a href="73e33ae0ca"><code>73e33ae</code></a></li>
<li>[Tests] fix tests run in batch <a href="262913006e"><code>2629130</code></a></li>
<li>[Tests] drop node requirement to 0.10 <a href="00c7f234aa"><code>00c7f23</code></a></li>
<li>[Dev Deps] update <code>buffer</code>, <code>hash-test-vectors</code>, <code>standard</code>, <code>tape</code>, <code>typedarray</code> <a href="92b5de5f67"><code>92b5de5</code></a></li>
<li>[Tests] drop node requirement to v3 <a href="9b5eca80fd"><code>9b5eca8</code></a></li>
<li>[meta] set engines to <code>&gt;= 4</code> <a href="807084c5c0"><code>807084c</code></a></li>
<li>Only apps should have lockfiles <a href="c72789c7a1"><code>c72789c</code></a></li>
<li>[Deps] update <code>inherits</code>, <code>safe-buffer</code> <a href="5428cfc6f7"><code>5428cfc</code></a></li>
<li>[Dev Deps] update <code>@ljharb/eslint-config</code> <a href="2dbe0aab41"><code>2dbe0aa</code></a></li>
<li>update README to reflect LICENSE <a href="8938256dbb"><code>8938256</code></a></li>
<li>[Dev Deps] add missing peer dep <a href="d52889688c"><code>d528896</code></a></li>
<li>[Dev Deps] remove unused <code>buffer</code> dep <a href="94ca7247f4"><code>94ca724</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="eb4ea2fd3d"><code>eb4ea2f</code></a> v2.4.12</li>
<li><a href="d8d77c0a72"><code>d8d77c0</code></a> [meta] reorder package.json</li>
<li><a href="df9d521e16"><code>df9d521</code></a> [eslint] fix package.json indentation</li>
<li><a href="35aec35c66"><code>35aec35</code></a> [meta] add <code>npmignore</code></li>
<li><a href="d52889688c"><code>d528896</code></a> [Dev Deps] add missing peer dep</li>
<li><a href="b46e7116eb"><code>b46e711</code></a> [meta] add <code>auto-changelog</code></li>
<li><a href="94ca7247f4"><code>94ca724</code></a> [Dev Deps] remove unused <code>buffer</code> dep</li>
<li><a href="2dbe0aab41"><code>2dbe0aa</code></a> [Dev Deps] update <code>@ljharb/eslint-config</code></li>
<li><a href="73e33ae0ca"><code>73e33ae</code></a> [Tests] avoid console logs</li>
<li><a href="f2a258e9f2"><code>f2a258e</code></a> [Fix] support multi-byte wide typed arrays</li>
<li>Additional commits viewable in <a href="https://github.com/crypto-browserify/sha.js/compare/v2.4.11...v2.4.12">compare view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a href="https://www.npmjs.com/~ljharb">ljharb</a>, a new releaser for sha.js since your current version.</p>
</details>
<br />
[](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>
Expecting users to create schemas in the form of
```
INDEX inv_idx lower(Body) TYPE text(tokenizer = 'default') GRANULARITY 64
```
default tokenizer, and lower(Body) specifically
Closes HDX-2221
One reference to hyperdx docs in [LOCAL.md](c2160536ac/LOCAL.md (L71)) remains because we don't have a Management APIs section in ClickStack docs yet
Group the alert tasks fetched from mongo into groups based on what needs to run from the same connection. This sets up for further optimizations and connection reuse.
plus the fix to reduce bloat in opamp agent logs
Users should be able to mount the custom otel collector config file and add/overrider receivers, processors and exporters
For example:
```
receivers:
hostmetrics:
collection_interval: 5s
scrapers:
cpu:
load:
memory:
disk:
filesystem:
network:
# override the default processors
processors:
batch:
send_batch_size: 10000
timeout: 10s
memory_limiter:
limit_mib: 2000
service:
pipelines:
metrics/hostmetrics:
receivers: [hostmetrics]
# attach existing processors
processors: [memory_limiter, batch]
# attach existing exporters
exporters: [clickhouse]
```
This will add a new `hostmetrics` receiver + `metrics/hostmetrics` pipeline and update existing `batch` + `memory_limiter` processors
WARNING: This feature is still in beta, and future updates may change how it works, potentially affecting compatibility
Ref: HDX-1865
I have problem with dynamic field in clickhouse json datatype. My database looks for now like this
```
│ CREATE TABLE click.log_json_better ↴│
│↳( ↴│
│↳ `log` JSON, ↴│
│↳ `ingest_time` DateTime64(9) DEFAULT now64(9) ↴│
│↳)
```
If some field contains string like bellow
`SELECT log.message, FROM click.log_json_better WHERE ...`
with result
```
log.message──┐
1. │ {"took":7,"errors":false,"items":[{"create":{...trunc # sometimes valid json, sometimes not
```
but this is representation, select for whole log
```
SELECT log
FROM click.log_json_better
WHERE (ingest_time = parseDateTime64BestEffort('2025-08-11T10:27:01.901588629Z', 9))...
```
truncated result with message part
```
trunc...4-536e18d9ad92"},"message":"{\"took\":7,\"errors\":false,\"items\...truc
```
<img width="1222" height="116" alt="image" src="https://github.com/user-attachments/assets/bee99ec4-708f-4a32-a7a0-4082bdc73a6c" />
so it's stored as escaped string and API is returning it as escaped string as well
`"{\"took\":7,\"errors\":false...trunc`
<img width="1731" height="553" alt="image" src="https://github.com/user-attachments/assets/97a2b608-490f-47cb-909e-3d7f9e411cc0" />
Then when I clicked on such row, it is escaped again and created query has no match in DB.
```
AND toString(`log`.message) = '{\\\"took\\\":4,...
```
<img width="1538" height="81" alt="image" src="https://github.com/user-attachments/assets/92f85860-2a1f-499b-b52a-f076e3fe0ecb" />
so I've made a simple fix with SqlString.raw. I've tried to match record with md5, to not use whole field content for search query, but no luck with playing around with escaping and stripping escaping.
At first, I've removed `Search value/object key too large.` error, because this was problem that I've encountered as first, trowing error crashed whole UI. I've had no problem with string 10x larger than 1000 chars.
Closes HDX-1955
This allows the frontend to use a more optimized ORDER BY clause for tables that have a time bucketed sort key for large scale performance