Epic boards: Add or to filtered search
What does this MR do and why?
Adds the OR operator, shown in the UI as "is one of", to the epic board's filtered search for the Label and Author tokens (the two tokens the epic board exposes). This extends the issue board work to epic boards.
This MR is stacked on top of feature/issue-board-filter-is-one-of and targets that branch, because it reuses the shared filtered search OR plumbing added there (the or bucket handling in the CE board_filtered_search.vue, boards_util.js, and constants.js). On its own against master, an "is one of" epic selection would be silently dropped, since the shared engine has no OR handling yet.
Frontend: the epic board's GraphQL EpicFilters type already accepted an or argument backed by UnionedEpicFilterInput (which supports author_usernames and label_names).
- Label and Author tokens now use
OPERATORS_IS_NOT_ORandmultiSelect: true. FilterFields[TYPE_EPIC]now includes the plural union field names (authorUsernames,labelNames) so OR selections pass the filter whitelist and reach the backend.
Backend fix: the epic board list resolver (BoardListEpicsResolver) merged the raw filter args straight into the finder without the BoardItemFilterable rewrite that the issue board resolver uses. The finder reads union values from the singular or[:label_name] / or[:author_username] keys, but the GraphQL input delivers them as labelNames / authorUsernames. Without the rewrite the union filter was silently ignored, so epics that did not match the selected labels still appeared. The resolver now includes BoardItemFilterable and runs filters through item_filters, matching the epic list and lists resolvers (which already did this).
Tests: updated the epic filtered search Jest spec and added union (is one of) by-label and by-author cases to the resolver spec. All CE and EE board frontend tests pass, the resolver spec passes, and eslint/rubocop are clean.
References
- Depends on and targets
feature/issue-board-filter-is-one-of(MR !256335 (merged)). - Using `or` in issue/mr/epic list views and boards (gitlab-org#9260)
Screenshots or screen recordings
| Before | After |
|---|---|
![]() |
![]() |
![]() |
![]() |
How to set up and validate locally
- Open a group epic board (EE, epics feature available).
- Open the filtered search.
- Add a Label or Author token.
- Choose the "is one of" operator.
- Select multiple values.
- Confirm the board filters to epics matching any of the selected values, and that the filter persists (does not disappear) after applying. Epics that do not have any of the selected labels should no longer appear.
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.



