Enable pipeline run filters bar with JSON filter query support#1923
Enable pipeline run filters bar with JSON filter query support#1923
Conversation
🎩 To tophat this PR:You can add the following URL parameter to your browser to tophat this PR: |
b8cb3c6 to
a38b45d
Compare
| "openapi-ts.config.ts", | ||
| "src/config/announcements.ts" | ||
| "src/config/announcements.ts", | ||
| "src/components/shared/BetaFeatureWrapper/BetaFeatureWrapper.tsx" |
There was a problem hiding this comment.
I want to keep this around for other betaflags in the future. Thoughts? (it was the wrapper we had around the fake filters)
There was a problem hiding this comment.
Most of this was just moving annotation filter from "advanced" to the top level filter and removing the status and order feature as its not supported
a38b45d to
f7cd384
Compare
| if (filters.annotations) { | ||
| for (const annotation of filters.annotations) { | ||
| if (annotation.value) { | ||
| predicates.push({ | ||
| value_contains: { | ||
| key: annotation.key, | ||
| value_substring: annotation.value, | ||
| }, | ||
| }); | ||
| } else { | ||
| predicates.push({ key_exists: { key: annotation.key } }); |
There was a problem hiding this comment.
I choose value_contains because tags are a comma seperated list, and anything with more then one tag could never really be found. this way we can do partial matches
| const value = filters[key]; | ||
| if (value) { | ||
| parts.push(`${key}:${value}`); | ||
| if (filters.created_after || filters.created_before) { |
There was a problem hiding this comment.
Note that when selecting until Feb 18, 2026 in the UI, it only shows Feb 17, looking at the URL 2026-02-18T08%3A00%3A00.000Z, this is until the start of Feb 18, not until the end of Feb 18.
Should selecting Feb 18 in the date range include the full day?
| const parts: string[] = []; | ||
| const predicates: FilterQueryPredicate[] = []; | ||
|
|
||
| if (filters.created_by) { |
There was a problem hiding this comment.
there is a use case where create_by could be an empty string (noticed early runs in the prod DB didn't have createdy_by), so can we allow search of empty string here?
Not asking you to change it now, I'm still doing investigations which I might need this so checking with you if it's feasible.
|
|
||
| if (filters.annotations) { | ||
| for (const annotation of filters.annotations) { | ||
| if (annotation.value) { |
There was a problem hiding this comment.
Wonder if we should allow empty string search here too, however the caveat would be if we're doing empty string search, it'll need to be "value_equals" not "value_contains".
Asking for feasibility, not a change request.


Description
This pull request implements a new JSON-based filter query system for pipeline runs and simplifies the filtering interface. The changes include:
filter_queryparameter that supports complex predicates including time ranges, value matching, and annotation filteringfiltersToFilterQueryfunction andfilter_queryparameter instead of the legacy formatpipeline-run-filters-barfeature flag and made the new filters bar the default experienceType of Change
Checklist
Test Instructions
filter_queryparameter correctly filters runs by created_by, pipeline_name, date ranges, and annotationsAdditional Comments
The new filter query system uses a structured JSON format with predicates like
value_equals,value_contains,key_exists, andtime_range, providing more flexibility than the previous string-based approach. The UI has been streamlined to focus on the most commonly used filters while maintaining full functionality through an improved inline interface.