Add individual evaluator selection with multi-select dropdown (Vibe Kanban)#1
Merged
Add individual evaluator selection with multi-select dropdown (Vibe Kanban)#1
Conversation
Replace the 3-option category filter (All/Errors/Suggestions) with a multi-select dropdown listing all 17 evaluators individually, grouped by type. Users can pick any combination (minimum 1 required). When all are selected, behavior is identical to before. Only shown in non-cloud mode. Adds selectedEvaluators option that flows through the full stack: frontend -> API -> engine -> runner. The existing evaluatorFilter and CLI --evaluator-filter flag remain unchanged for backward compatibility. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ment Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The multi-select dropdown was being clipped by the parent .glass-card container which applies overflow-hidden. Override with overflow-visible on the form card so the dropdown can extend beyond the card boundary. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Why
Previously, the frontend only allowed filtering evaluators by broad category ("errors" or "suggestions"). Users had no way to run a specific subset of evaluators — for example, only "Security" and "Outdated Documentation" — without running the entire category. This change gives fine-grained control over which evaluators to run when not in cloud mode.
Implementation details
Backend (additive, backward-compatible)
selectedEvaluators?: string[]option onIEvaluationOptions— when set and non-empty, overridesevaluatorFilter. The existingevaluatorFiltertype ("all" | "errors" | "suggestions") and CLI--evaluator-filterflag are unchanged.filterEvaluatorsByIds()function inevaluator-types.ts— filters the evaluator list by specific IDs (filenames without.md), preserving original order.runAllEvaluators()andrunUnifiedEvaluation()accept and useselectedEvaluators, falling back to category-based filtering when not set.selectedEvaluatorsis explicitly forwarded at both runner call sites inengine.ts(per the documented Configuration Options Flow pattern in CLAUDE.md).GET /api/evaluatorsnow returnsissueType("error" | "suggestion") per evaluator, enabling the frontend to group them.Frontend
RepositoryUrlInput.tsxreplaces the old<select>:"{N}/{total} evaluators"with chevronuseRef+mousedownlisteneruseEvaluationApi—submitJob()accepts and sendsselectedEvaluatorsin the POST bodygetFilteredEvaluatorCount()accepts optionalselectedCountfor accurate progress bar initializationselectedEvaluatorsthrough the submission flowTests
filterEvaluatorsByIdscovering: specific selection, order preservation, empty input, unknown IDs, full selection, and mixed error/suggestion selectionFiles changed (11)
src/shared/types/evaluation.tsselectedEvaluatorsfieldsrc/shared/evaluation/evaluator-types.tsfilterEvaluatorsByIds()src/shared/evaluation/runner.tsselectedEvaluatorsin both runnerssrc/shared/evaluation/engine.tssrc/api/utils/evaluator-utils.tsissueTypeto evaluator responsefrontend/src/types/evaluator.tsissueTypefieldfrontend/src/hooks/useEvaluationApi.tsselectedEvaluatorsparamfrontend/src/lib/formatters.tsfrontend/src/components/RepositoryUrlInput.tsxfrontend/src/App.tsxselectedEvaluatorssrc/shared/evaluation/evaluator-types.test.tsThis PR was written using Vibe Kanban