Repository navigation
✨ dashboard: faceted label filter with saved filters and Needs human preset - #12181
Conversation
…preset Adds a collapsible Filter section to every Projects card driven by a faceted filter: labels present on the repo's open issues/PRs (live counts), free-text terms (quoted phrases, -term exclusion), type/state/author facets and an any/all toggle. Selections can be named and saved; saved filters are persisted per hive in localStorage and renamed/updated/deleted via inline UI. Built-in presets come from the server (labelPresets[] on /api/status) so the Needs human preset — effective hard-suppress labels, needs-signal and the hold labels — never drifts from what Hive itself parks on (ADR-0019, #12002). It is selected by default. Refs #12172 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Open PR overlap checkBase branch: Conflicts are checked with every PR merged onto the current tip of
|
|
merged by Hive trusted-author auto-merge: author @clubanderson holds role owner and GitHub permission admin on repo; CI green at 9d82d26. |
|
Thank you for your contribution! Your PR has been merged. We'd love to hear how your experience was: share feedback |
Refs #12172
PR 1 of 2 for the faceted project-card filter (PR 2 adds sidebar pinning + the cross-repo view).
What
SECTION_LS_PREFIXcollapse keys).🔎 Filter): labels present on the repo's open issues/PRs with live counts, free-text terms ("quoted phrase", unquoted words AND within a term,-termexclusion, case-insensitive over title + number + labels, debounced input, no regex exposure), type (issue/PR), state (claimed/unclaimed/parked/covered by PR), author kind (hive/human/bot), any/all toggle shared by labels and terms.prompt()/confirm()), one global selection rendered in each card. Persisted in localStoragehive-label-filters:<hiveId>(no server-side prefs endpoint exists).needs-direction→needs-decision→needs-spec→needs-signal→needs-human→ hold labels, then newest-first.Go side (minimal)
Labels are already present on every item in
/api/status(actionableIssues,heldIssues,nonActionableIssuesincl. hard-suppressed bucketfiltered,openPrs,heldPrs), so matching is client-side. The only new field islabelPresets[]so the Needs human set is sourced fromconfig.HardSuppressLabelsConfig.Effective*+github.NeedsSignalLabel+github.HoldLabels/CanonicalHiveHoldLabel(label_presets.go) and cannot drift from the labels Hive parks on (#12002, ADR-0019).blockedis deliberately not included: in this codebase it is only a contribute-skip marker / PR mergeability state, not a hard-suppress label.Tests
label_presets_test.go: default set/order, config overrides + hive hold label, dedupe, noblocked, payload carries presets.label_filter_helpers_test.go: runs the DOM-free JS helper block under node — term parsing, OR/AND, exclusion, facets, counts, priority sort, store defaults (Needs human active + pinned by default).Docs:
dashboard-sections.md(Projects),api-reference.md; changelogadded-12172-project-card-label-filter.md. No new inline styles / raw values (style ratchet).