Skip to content

✨ dashboard: faceted label filter with saved filters and Needs human preset - #12181

Merged
hivecommons-hive[bot] merged 1 commit into
v5from
feat/needs-human-section
Oct 15, 2026
Merged

hivecommons-hive[bot] merged 1 commit into
v5from
feat/needs-human-section

Conversation

@clubanderson

Copy link
Copy Markdown
Member

Refs #12172

PR 1 of 2 for the faceted project-card filter (PR 2 adds sidebar pinning + the cross-repo view).

What

  • Filter section in every Projects card (collapsible; collapsed by default only while empty; open/closed state remembered per repo via the existing SECTION_LS_PREFIX collapse keys).
  • Facet bar (toolbar 🔎 Filter): labels present on the repo's open issues/PRs with live counts, free-text terms ("quoted phrase", unquoted words AND within a term, -term exclusion, 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.
  • Saved filters: name + save, recall as chips, rename/update/delete with inline UI (no prompt()/confirm()), one global selection rendered in each card. Persisted in localStorage hive-label-filters:<hiveId> (no server-side prefs endpoint exists).
  • Presets (not deletable, hideable): Needs human (default), Help wanted, Covered by PR.
  • Rows: number, title → GitHub, one pill per label (tone classes for the escalation/hold labels), age, PR icon; Needs human sorted 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, nonActionableIssues incl. hard-suppressed bucket filtered, openPrs, heldPrs), so matching is client-side. The only new field is labelPresets[] so the Needs human set is sourced from config.HardSuppressLabelsConfig.Effective* + github.NeedsSignalLabel + github.HoldLabels/CanonicalHiveHoldLabel (label_presets.go) and cannot drift from the labels Hive parks on (#12002, ADR-0019). blocked is 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, no blocked, 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; changelog added-12172-project-card-label-filter.md. No new inline styles / raw values (style ratchet).

…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>
@kubestellar-prow kubestellar-prow Bot added the dco-signoff: yes Indicates the PR's author has signed the DCO. label Oct 15, 2026
@kubestellar-prow

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign hanthor for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kubestellar-prow kubestellar-prow Bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Oct 15, 2026
@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Open PR overlap check

Base branch: v5

Conflicts are checked with every PR merged onto the current tip of v5, so a PR that only needs a rebase is not reported as conflicting with its siblings.

PR Title Relation Files
#12182 ✨ intent: add intent.shadow to record would_have_blocked same files src/pkg/dashboard/static/index.html
#12096 ✨ feat(evidence): add GET /api/evidence/summary same files src/docs/api-reference.md
#12158 ✨ review: add review.shadow to record would_have_held for the review gate same files src/pkg/dashboard/static/index.html
#12170 🐛 Settings modal: sticky-section gap, height, and section navigation same files src/pkg/dashboard/static/index.html

@hivecommons-hive

Copy link
Copy Markdown
Contributor

merged by Hive trusted-author auto-merge: author @clubanderson holds role owner and GitHub permission admin on repo; CI green at 9d82d26.

@kubestellar-prow
kubestellar-prow Bot deleted the feat/needs-human-section branch October 15, 2026 20:14
@github-actions

Copy link
Copy Markdown
Contributor

Thank you for your contribution! Your PR has been merged.

We'd love to hear how your experience was: share feedback

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dco-signoff: yes Indicates the PR's author has signed the DCO. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant