Commit graph

1089 commits

Author SHA1 Message Date
github-actions[bot]
81d48e410a
Release HyperDX (#1455)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-29 08:36:23 -08:00
Drew Davis
d5181b6a67
fix: Add SPAN_KIND_ values to service map filters (#1513)
Closes #1512 
Closes HDX-3100

# Summary

This PR adds additional valid server/client/producer/consumer span kind values to the service map query.
2025-12-29 15:55:26 +00:00
Drew Davis
141b4969b6
fix: Correctly disable previous period query (#1528)
Closes HDX-3118

# Summary

This PR ensures that "previous period" queries are not run when `compareToPreviousPeriod` is undefined. Previously, these queries were running unnecessarily, increasing the burden on ClickHouse.
2025-12-29 15:51:36 +00:00
Drew Davis
5062d80daf
fix: Prevent dashboard infinite re-render (#1529)
Closes HDX-3117

# Summary

This PR fixes a crash when loading or navigating away from the dashboard page. It occurred when a non-auto granularity was specified, and was caused by an infinite re-render loop due to continuously watching and resetting the granularity query parameter.

## Before

https://github.com/user-attachments/assets/f2bd0b48-5292-48b6-b27c-f007e5faef06

## After


https://github.com/user-attachments/assets/3bcd635a-1d14-4530-b08b-c737984133eb
2025-12-29 15:06:11 +00:00
Elizabet Oliveira
2142734039
style: Fix DBRowTableIconButton contrast in light mode (#1524) 2025-12-26 09:54:43 +00:00
Sam Garfinkel
ca693c0f56
feat: add support for visualizing histogram counts (#1477)
Adds support for histogram `count` aggregations. This partially resolves https://github.com/hyperdxio/hyperdx/issues/1441, which should probably be split into a new ticket to only address `sum`.

As part of this, I also moved the translation functionality for histograms to a new file `histogram.ts` to avoid contributing even more bloat to `renderChartConfig`. Happy to revert this and move that stuff back into the file if that's preferred.

I also noticed by doing this that there was actually a SQL error in the snapshots for the tests--the existing quantile test was missing a trailing `,` after the time bucket if no group was provided https://github.com/hyperdxio/hyperdx/blob/main/packages/common-utils/src/__tests__/__snapshots__/renderChartConfig.test.ts.snap#L194 so centralizing like this is probably desirable to keep things consistent.

I also personally use webstorm so I added that stuff to the gitignore.
2025-12-23 22:56:20 +00:00
Brandon Pereira
12cd6433b7
Improvements to Webhooks Section (#1522)
- Sync with Upstream to avoid future conflicts
- Move WebhookSections to its own file
- Group Webhooks by Type
- Add Webhook Icons Support
- Ensure Link is used instead of Slack to represent Webhooks Generically

<img width="959" height="752" alt="Screenshot 2025-12-23 at 1 35 40 PM" src="https://github.com/user-attachments/assets/0df2d5a2-4396-415c-ba38-685d65d69836" />

Fixes HDX-2794
2025-12-23 20:53:50 +00:00
Brandon Pereira
9103ad6328
tweak search spec to use info instead of error (#1521) 2025-12-23 12:02:50 -07:00
Tom Alexander
468eb92481
chore: update watch uses to useWatch (#1516)
Fixes: HDX-3101

Co-authored-by: Brandon Pereira <7552738+brandon-pereira@users.noreply.github.com>
2025-12-23 16:34:48 +00:00
Dan Hable
6537884825
build: remove lingering references to log-rotator.sh (#1520)
We removed the rotator script when we used the named pipe approach to the otel collector logging. There were some references left over that caused the docker build to fail.
2025-12-23 16:22:46 +00:00
Brandon Pereira
840a1639f1
refactor: simplify Link components by removing legacyBehavior prop (#1518)
This commit updates multiple components to streamline the usage of Link elements by removing the legacyBehavior and passHref props.

No functionality changes introduced.

Fixes HDX-3071
2025-12-22 23:52:59 +00:00
Brandon Pereira
15b61c710d
add ability to define default source for e2e tests (#1519)
some are currently failing, this should resolve that
2025-12-22 23:22:31 +00:00
Tom Alexander
99820457a6
refactor: Re-write playwright tests using best practices + add eslint config (#1508)
Fixes: HDX-3075

* Refactors to using Page model
* Extracts common interactions into components
* Re-writes tests to conform to new model
* Adds eslint plugin for playwright best practices
* Fixes bad lints

Note: The best practice is to not use `.waitForLoadState('networkidle')` however there are several instances where components are re-rendered completely due to underlying db queries. This causes flakiness in the tests. We will re-evaluate the best solution for this in a future ticket and remove the `networkidle` from the eslint ignore list.
2025-12-19 21:41:44 +00:00
dependabot[bot]
4c7cf8019c
chore(deps-dev): bump storybook from 10.1.4 to 10.1.10 (#1503)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-19 22:37:39 +01:00
Dan Hable
0bb7407747
fix: support otel collector logging with minimal storage (#1509)
This commit sets up a FIFO named pipe with the same name/path that the otel collector and supervisor are expecting. By starting to tail that pipe before starting the collector, we can send log files to stdio without the memory required by the `passthrough_logs` feature or and storage on the volume.

---
Running locally in orbstack, we're still seeing logs on stdout

<img width="2316" height="1452" alt="image" src="https://github.com/user-attachments/assets/f86961cf-6ea4-4faa-82f8-54f9596b5f16" />

but the file size for `agent.log` remains at 0

<img width="1606" height="838" alt="image" src="https://github.com/user-attachments/assets/6feb9470-e220-4d8a-b5b3-10a221926158" />

disk usage stats also remain stable

<img width="1728" height="860" alt="image" src="https://github.com/user-attachments/assets/ff5fe593-4936-446e-9396-606fb495d60d" />
2025-12-19 19:18:33 +00:00
Aaron Knudtson
ee9f43b9bc
fix: lagginess on search page and in sql input typing (#1504)
Still seems somewhat present but noticeably better. Profiler shows a great reduction
2025-12-19 17:45:55 +00:00
Daniel Lockyer
99ea6395cf
chore: drop npx prefix from concurrently commands (#1505)
Co-authored-by: Drew Davis <drew.davis@clickhouse.com>
2025-12-19 11:55:02 -05:00
Drew Davis
a5a04aa92c
feat: Add materialized view support (Beta) (#1507)
Closes HDX-3082

# Summary

This PR back-ports support for materialized views from the EE repo. Note that this feature is in **Beta**, and is subject to significant changes.

This feature is intended to support:

1. Configuring AggregatingMergeTree (or SummingMergeTree) Materialized Views which are associated with a Source
2. Automatically selecting and querying an associated materialized view when a query supports it, in Chart Explorer, Custom Dashboards, the Services Dashboard, and the Search Page Histogram.
3. A UX for understanding what materialized views are available for a source, and whether (and why) it is or is not being used for a particular visualization.

## Note to Reviewer(s)

This is a large PR, but the code has largely already been reviewed.

- For net-new files, types, components, and utility functions, the code does not differ from the EE repo
- Changes to the various services dashboard pages do not differ from the EE repo
- Changes to `useOffsetPaginatedQuery`, `useChartConfig`, and `DBEditTimeChart` differ slightly due to unrelated (to MVs) drift between this repo and the EE repo, and due to the lack of feature toggles in this repo. **This is where slightly closer review would be most valuable.**

## Demo

<details>
<summary>Demo: MV Configuration</summary>

https://github.com/user-attachments/assets/fedf3bcf-892c-4b8d-a788-7e231e23bcc3
</details>

<details>
<summary>Demo: Chart Explorer</summary>

https://github.com/user-attachments/assets/fc8d1efa-7edc-42fc-98f0-75431cc056b8
</details>

<details>
<summary>Demo: Dashboards</summary>

https://github.com/user-attachments/assets/f3cb247e-711f-4d90-95b8-cf977e94f065
</details>

## Known Limitations

This feature is in Beta due to the following known limitations, which will be addressed in subsequent PRs:

1. Visualization start and end time, when not aligned with the granularity of MVs, will result in statistics based on the MV "time buckets" which fall inside the date range. This may not align exactly with the source table data which is in the selected date range.
2. Alerts do not make use of MVs, even if the associated visualization does. Due to (1), this means that alert values may not exactly match the values shown in the associated visualization.

## Differences in OSS vs EE Support

 - In OSS, there is a beta label on the MV configurations section
 - In EE there are feature toggles to enable MV support, in OSS the feature is enabled for all teams, but will only run for sources with MVs configured.

## Testing

To test, a couple of MVs can be created on the default `otel_traces` table, directly in ClickHouse:

<details>

<summary>Example MVs DDL</summary>

```sql
CREATE TABLE default.metrics_rollup_1m
(
    `Timestamp` DateTime,
    `ServiceName` LowCardinality(String),
    `SpanKind` LowCardinality(String),
    `StatusCode` LowCardinality(String),
    `count` SimpleAggregateFunction(sum, UInt64),
    `sum__Duration` SimpleAggregateFunction(sum, UInt64),
    `avg__Duration` AggregateFunction(avg, UInt64),
    `quantile__Duration` AggregateFunction(quantileTDigest(0.5), UInt64),
    `min__Duration` SimpleAggregateFunction(min, UInt64),
    `max__Duration` SimpleAggregateFunction(max, UInt64)
)
ENGINE = AggregatingMergeTree
PARTITION BY toDate(Timestamp)
ORDER BY (Timestamp, StatusCode, SpanKind, ServiceName);

CREATE MATERIALIZED VIEW default.metrics_rollup_1m_mv TO default.metrics_rollup_1m
(
    `Timestamp` DateTime,
    `ServiceName` LowCardinality(String),
    `SpanKind` LowCardinality(String),
    `version` LowCardinality(String),
    `StatusCode` LowCardinality(String),
    `count` UInt64,
    `sum__Duration` Int64,
    `avg__Duration` AggregateFunction(avg, UInt64),
    `quantile__Duration` AggregateFunction(quantileTDigest(0.5), UInt64),
    `min__Duration` SimpleAggregateFunction(min, UInt64),
    `max__Duration` SimpleAggregateFunction(max, UInt64)
)
AS SELECT
    toStartOfMinute(Timestamp) AS Timestamp,
    ServiceName,
    SpanKind,
    StatusCode,
    count() AS count,
    sum(Duration) AS sum__Duration,
    avgState(Duration) AS avg__Duration,
    quantileTDigestState(0.5)(Duration) AS quantile__Duration,
    minSimpleState(Duration) AS min__Duration,
    maxSimpleState(Duration) AS max__Duration
FROM default.otel_traces
GROUP BY
    Timestamp,
    ServiceName,
    SpanKind,
    StatusCode;
```

```sql
CREATE TABLE default.span_kind_rollup_1m
(
    `Timestamp` DateTime,
    `ServiceName` LowCardinality(String),
    `SpanKind` LowCardinality(String),
    `histogram__Duration` AggregateFunction(histogram(20), UInt64)
)
ENGINE = AggregatingMergeTree
PARTITION BY toDate(Timestamp)
ORDER BY (Timestamp, ServiceName, SpanKind);

CREATE MATERIALIZED VIEW default.span_kind_rollup_1m_mv TO default.span_kind_rollup_1m
(
    `Timestamp` DateTime,
    `ServiceName` LowCardinality(String),
    `SpanKind` LowCardinality(String),
    `histogram__Duration` AggregateFunction(histogram(20), UInt64)
)
AS SELECT
    toStartOfMinute(Timestamp) AS Timestamp,
    ServiceName,
    SpanKind,
    histogramState(20)(Duration) AS histogram__Duration
FROM default.otel_traces
GROUP BY
    Timestamp,
    ServiceName,
    SpanKind;
```
</details>

Then you'll need to configure the materialized views in your source settings:

<details>
<summary>Source Configuration (should auto-infer when MVs are selected)</summary>

<img width="949" height="1011" alt="Screenshot 2025-12-19 at 10 26 54 AM" src="https://github.com/user-attachments/assets/fc46a1b9-de8b-4b95-a8ef-ba5fee905685" />

</details>
2025-12-19 16:17:23 +00:00
Brandon Pereira
99e7ce257f
prevent excessive trace events when DBRowTable is used (#1498)
Currently, each column was adding 1 extra event listener, so this resulted in several extra traces being created. Given that these popover buttons on rows don't need click outside logic (they auto-close) we can turn off these events to significantly reduce the listeners.

Before:

https://github.com/user-attachments/assets/6498e309-9e2c-42af-ba85-d9684d49e9e3

After:

https://github.com/user-attachments/assets/56d9302e-0ad1-4ac3-868e-6cf47a0c8492

This is coming from upstream code: https://github.com/hyperdxio/hyperdx-js/blob/main/packages/instrumentation-exception/src/browser/integrations/browserapierrors.ts#L189 


Fixes HDX-2928
2025-12-19 16:10:18 +00:00
Brandon Pereira
61cb9425b0
only run sample query when visible (#1499)
Improves the Chart Explorer page to only run the sample query when the accordion is open and visible. Also changed default to closed since it's below the fold.

@pulpdrew assigned to you as you originally observed this issue

Demo:
https://github.com/user-attachments/assets/6108323a-767f-4e9f-88cf-4b9e2de9def1

Fixes HDX-2895
2025-12-18 15:34:17 +00:00
Aaron Knudtson
b99052ad8c
fix: cityHash64 result cast to string to avoid precision issues (#1496)
Closes HDX-3073
2025-12-17 19:09:46 +00:00
Drew Davis
50ba92ac24
feat: Add filters to the Services dashboard (#1494)
Closes HDX-3015

# Summary

This PR adds custom filters to the services dashboard.

Notes:

- These filters are per-source, per-dashboard. Different sources have different schemas, so we must store them per-source to avoid invalid filters being available for some sources.
- These filters are stored in a new collection in MongoDB (PresetDashboardFilters) and accessed via a new set of CRUD APIs
- The UI is 99% re-used from the existing custom dashboard filters

## Demo

https://github.com/user-attachments/assets/82a4a55f-9b8b-46eb-be24-82254a86eed3
2025-12-17 18:39:05 +00:00
Tom Alexander
68918e4711
chore: Run playwright tests with mongo backend (#1493)
Enables broader testing

Fixes: HDX-3069

To test:
- By default `make e2e` runs playwright tests with a docker compose for mongo
- To test the local-only mode, run `make e2e local=true`
- Since we manage play.hyperdx.io, I envision us running both commands on release
2025-12-17 18:33:28 +00:00
Dan Hable
7a53880356
Revert "fix(otel-collector): fix log rotation script (#1479)" (#1495)
This reverts commit 0b19f915e8.
2025-12-17 17:27:51 +00:00
Aaron Knudtson
2c3f31b2ba
test: add test to ensure querykey matches for searchtotalcount & DBSearchPage histogram chart (#1491)
Closes HDX-3054
2025-12-17 14:59:26 +00:00
Drew Davis
b58c52eb41
fix: Fix Services Dashboard bugs (#1484)
Closes HDX-3033

# Summary

This PR fixes three bugs in the Services Dashboard

1. When using CTEs in chart configs, as we do on the HTTP and Databases tabs, there were frequent console errors as we tried to `DESCRIBE` the CTE names, to support the materialized columns optimization. With this PR, we no longer try to DESCRIBE CTEs, by skipping the materialized column optimization for configs without a `from.databaseName`.
2. Previously, the Request Throughput chart would reload whenever switching the Request Error Rate chart from `Overall` to `By Endpoint`. This was because the `displayType` in the Request Throughput chart was based on the toggle state, despite being unrelated. Now, the displayType of the Request Throughput chart is constant, eliminating the extra refetch.
3. Previously, when switching to the Services dashboard with a non-Trace Source ID in the URL params, the Services dashboard would initially be empty, then after toggling to a Trace Source, queries would briefly be issued against the non-Trace source (they would fail and/or be cancelled a moment later). Now, non-Trace sources are filtered out so that a Trace source is chosen as the default, and non-Trace sources are not queried.
4. Previously, we were spreading the entirety of `...source` into each config, which resulted in `metricTables` being in the config under particular circumstances (HDX-3035), which in turn caused errors from renderChartConfig. This has been fixed by `pick`ing only the fields we need from source.
2025-12-17 12:15:05 +00:00
Brandon Pereira
8241ffea89
Improvements to Line Wrapping functionality (#1492)
- make wrapping lines store to localStorage for persistence
- add Line Wrap to row buttons, to help with discoverability of feature (originally did wrapping per line when clicked, but didn't feel like it was worth the complexity)

<img width="182" height="89" alt="Screenshot 2025-12-16 at 1 15 12 PM" src="https://github.com/user-attachments/assets/c6c7a8c8-e7d1-465f-a19b-08da6d79c0cb" />
<img width="868" height="144" alt="Screenshot 2025-12-16 at 1 15 24 PM" src="https://github.com/user-attachments/assets/4f738f43-1402-4aaa-b0d8-717a7b2b0034" />

Fixes HDX-2702
2025-12-16 20:26:38 +00:00
Tom Alexander
0d3da6f7a3
fix: case sensitivity issue with email invites (#1486)
Fixes: HDX-3055
Fixes: #1482
2025-12-16 19:21:40 +00:00
Tom Alexander
dc846011f3
fix: show alert indicator for bar charts too (#1487)
Fixes: HDX-2722
2025-12-16 18:40:12 +00:00
Brandon Pereira
80117ebf9a
minor design tweaks to the search page filters UI. (#1490)
Suggestions courtesy of @elizabetdev 

- ellipsis on filter names
- make clear button an icon
- add tooltip to icons

Before:
<img width="216" height="190" alt="Screenshot 2025-12-15 at 4 32 57 PM" src="https://github.com/user-attachments/assets/e9e911b1-c6a3-4d10-be64-f08d107cdea3" />

After:
<img width="295" height="173" alt="Screenshot 2025-12-15 at 4 30 40 PM" src="https://github.com/user-attachments/assets/a4766210-0f58-4aa1-bff0-09923a80beb4" />


Fixes HDX-2366
2025-12-16 15:46:48 +00:00
Brandon Pereira
28dd5cedf3
small quality of live improvements (#1489)
- ignore next-env.d.ts from eslint - it's throwing errors but shouldn't be modified by the user
- suppress next upgrade logging changes, currently it logs all api calls but this isn't necessary because pino logs on the backend
2025-12-15 23:08:27 +00:00
Aaron Knudtson
55e1754e6c
fix: make query key match (#1488) 2025-12-15 20:55:10 +00:00
Tom Alexander
87c1f93e69
chore: add sharding to e2e test run (#1485) 2025-12-15 20:30:56 +00:00
Brandon Pereira
4ba37e557c
Remove Bootstrap Icons (#1480)
This PR removes bootstrap-icons entirely from the app. It also adds an eslint plugin to detect uses and throw an error, this will help in the immediate short term with PRs in flight and merging downstream.

Fixes HDX-3050
2025-12-15 17:06:40 +00:00
Warren
58e78ab16f
ci: fix release job concurrency issue (#1456)
- Multiple workflow runs can now run in parallel for different commits
- The release job (Docker builds) won't be cancelled once it starts
- New commits will queue their release jobs to run after the current one finishes (due to the concurrency group per matrix item)

Ref: HDX-3008
2025-12-15 16:15:24 +00:00
Dan Hable
0b19f915e8
fix(otel-collector): fix log rotation script (#1479)
There were two issues with the log rotation script:

1. Logs could be lost since copying and then truncating the file might not finish before logs arrive.

2. The otel collector application will keeps the file handle and offset cached. After truncating, it will write starting at the last offset leaving the unallocated garbage in the beginning of the file. This garbage uses space.

This commit moves the file instead of copying. That allows the collector to continue writing to the rolled file until a SIGHUP is sent. This causes a config refresh, which also opens a new log file. After, the rolled file and the new log file have correct sizes.

--
**ADDITIONAL NOTES**: 

Claude's code review is not accurate here.

* The alpine image is based on busybox and fuser is a command implemented by busybox. This can be verified by just running the collector and watching the log rotate behavior.
* The mv command updates the name of the file in the file system but doesn't change the inode number. A process only uses the file path the first time the file is open to resolve it into a inode number. Moving the file changes the name but doesn't change the inode number so the process will continue to write to that file.
2025-12-15 16:08:11 +00:00
Aaron Knudtson
e0c23d4e40
feat: buffer and flush parallelized window queries to always flush inorder data (#1481)
We should be able to send most chart series queries all at once and view the results as the data comes in. This also ensures the data arrives in order.

This is only enabled it for the histogram on DBSearchPage so far.

Closes HDX-3051
2025-12-15 15:56:31 +00:00
Drew Davis
19b710fb68
fix: Update Services Dashboard count() queries to correctly use MVs (#1473)
Closes HDX-3057

This PR updates the Request Error Rate query config so that it can correctly leverage materialized views.
2025-12-15 14:32:43 +00:00
Tom Alexander
96f0539e7a
feat: Add silence alerts feature (#1464)
Fixes: HDX-2734
2025-12-12 21:56:09 +00:00
Minha, Jeong
ae4c8765e7
fix: error loading row data by multiple search panel in dashboard (#1472) 2025-12-12 22:52:10 +01:00
Brandon Pereira
922949ac7e
fix issue where swagger was not resolving correctly in dev env (#1478)
| Before | After | 
| --- | --- |
|  <img width="824" height="151" alt="Screenshot 2025-12-12 at 1 17 28 PM" src="https://github.com/user-attachments/assets/44d0af8d-c1d4-4551-a38d-38c54c3eaf8e" /> | <img width="1544" height="634" alt="Screenshot 2025-12-12 at 1 16 38 PM" src="https://github.com/user-attachments/assets/93156104-c4e9-493b-abab-b80a60b2e00f" /> | 
| <img width="2328" height="538" alt="Screenshot 2025-12-12 at 1 17 19 PM" src="https://github.com/user-attachments/assets/4cac5d92-8155-46eb-9b15-399223b9d2fd" /> | No Output |
2025-12-12 20:25:17 +00:00
Tom Alexander
780279fdb7
feat: Save tile to dashboard from chart explorer (#1471)
Fixes: HDX-3043
Fixes #1470

Disabled for local mode, but works on server-backed instances. 
Testing steps:
1) Open Chart Explorer
2) Build a chart
3) Click the hamburger menu to the right of the Green play button
4) Select Save to Dashboard
5) Choose an existing Dashboard to save to.
6) Repeat 1-4 but with a new dashboard.
7) repeat 1-4 with different chart types

<img width="1471" height="315" alt="image" src="https://github.com/user-attachments/assets/5bc5ca57-ac4f-4f6c-8de9-ae77691c2303" />

<img width="692" height="519" alt="image" src="https://github.com/user-attachments/assets/58639bbb-5389-4a1c-935b-092f0e5a29e2" />
2025-12-12 19:55:51 +00:00
Brandon Pereira
5be0e007fe
[security] bump react deps (#1474)
We aren't using RSCs so we shouldn't be affected, but still doesn't hurt to bump the dependencies
2025-12-12 17:57:53 +00:00
Aaron Knudtson
6d4fc318e8
introduce parallelized chunking (#1460)
Some queries benefit from being windowed, but do not require being run in series. The histogram on top of the search page is the perfect example! This PR enables that query to be run in parallel. It does essentially the same thing as the code that runs it in series, but wraps in a `Promise.all`.

View the video here and compare the speed of loading a histogram. Compare by testing play.hyperdx.io and then the published preview.


https://github.com/user-attachments/assets/d519f643-9d84-4ed0-a8b7-84570f80a58a


Closes HDX-3030
2025-12-12 16:13:38 +00:00
dependabot[bot]
30ffc5ed6c
chore(deps): bump next from 16.0.7 to 16.0.9 (#1467)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-12 16:38:42 +01:00
Drew Davis
84d60a64f9
fix: Fix double value for isRootSpan facet (#1469) 2025-12-12 10:35:52 -05:00
Drew Davis
69d9a4186d
feat: Filter on isRootSpan column if present (#1461)
Closes HDX-3009

# Summary

This PR updates the Root Spans Only filter to support a materialized `isRootSpan` column, which is expected to be present on some trace table schemas. If that column is present, then the `Root Spans Only` filter will add a filter like 'isRootSpan IN (TRUE)` to the query, instead of the default `ParentSpanId IN ('')`. The UI has also been updated to support displaying and pinning boolean filter values.

**Note:** We still only query string type filter values, so we won't show isRootSpan unless Root Spans Only has been toggled.

<details>
<summary>I confirmed that if `isRootSpan` is in the ordering key, then this new condition will utilize the key to prune granules:</summary>

<img width="1678" height="1065" alt="Screenshot 2025-12-11 at 11 54 35 AM" src="https://github.com/user-attachments/assets/e22ae689-25a9-4d6b-b0f6-cc8f8396c35b" />
</details>

## Demo

<details>
<summary>For a source with the isRootSpan filter</summary>

https://github.com/user-attachments/assets/ccc7a890-b16e-4de6-bbb9-295fb10aa214
</details>

<details>
<summary>For a source without the isRootSpan filter (no change)</summary>

https://github.com/user-attachments/assets/33d4dd0a-136a-4284-812c-ddd12e67246e
</details>
2025-12-12 14:11:42 +00:00
Brandon Pereira
65bcc1e72e
Improve common-utils build performance and add support for .env.local (#1466)
- Improves common-utils build process so the server is ready immediately when started. Currently, when the server starts common-utils hasn't finished building, so it starts, crashes, then restarts correctly after build. Now it runs as expected the first try.
- Adds support for `.env.local` so you can easily provide secret keys without always passing it in via the CLI
- These features already exist downstream, but they seem necessary fro oss as well.
2025-12-11 23:07:16 +00:00
Brandon Pereira
1b42180a3d
Fix deprecated @import syntax warning after upgrading react (#1465)
also upgrade stylelint to avoid this issue having a regression

<img width="1243" height="347" alt="Screenshot 2025-12-11 at 1 15 30 PM" src="https://github.com/user-attachments/assets/fb218768-fcd7-41aa-8d05-c12996137539" />
2025-12-11 22:58:08 +00:00
Brandon Pereira
f29b33e5ff
add back linting prettier via eslint (#1463) 2025-12-11 12:00:31 -07:00