Skip to content

feat(hardware): filter the hardware page by the registry - #7

Closed
alanpeixinho wants to merge 2 commits into
feat/hardware-daily-aggregatesfrom
feat/2166/hardware-registry-filters
Closed

alanpeixinho wants to merge 2 commits into
feat/hardware-daily-aggregatesfrom
feat/2166/hardware-registry-filters

Conversation

@alanpeixinho

@alanpeixinho alanpeixinho commented Oct 20, 2026 •

Copy link
Copy Markdown

What it is

Part of kernelci#1886. Closes kernelci#2166. Part of kernelci#2161. Depends on kernelci#2181, so base this on feat/hardware-daily-aggregates.

The hardware page filters by the shared registry. The fields are architecture, processor, platform vendor, silicon vendor, platform, system module, form factor, and board type. They open from Filters. A section with 8 options or fewer is a row of checkbox chips. A longer section is a searchable multi-select. The selection stays in the URL.

Values in one field are OR. Different fields are AND. A board missing from the registry still appears, and it matches only a platform id, and only when that is the only field set.

The window listing and the revision listing both read hardware_daily_builds and hardware_daily_tests. The options use those same rows, either the day window or the pinned checkout.

The same drawer is tighter on tree details, hardware details, and issue listing. Titles and chips are smaller, the repeated select lines are gone, and duration min and max sit on one line.

How to test

  • On /hardware, open Filters and select arm. The list narrows, and a reload keeps the selection.
  • Add a second architecture. Both stay. Then add a platform vendor. The list narrows again.
  • Select only a platform id that is not in the registry. That board stays. Add any other field and it drops out.
  • Open a long section, search, select two values, and clear them with the X.
  • Pin a tree, branch, and commit. The list and the options follow that checkout.
  • Clear the selection and the full list returns.
  • Open Filters on a tree details page. Status stays chips, a long list is a multi-select, and build duration shows min and max on one line.

Made with Cursor


Note

Medium Risk
Changes core hardware listing query paths and aggregation semantics (daily tables vs prior status/revision SQL), so regressions could affect row counts or which platforms appear when filters mix registry and non-registry boards.

Reviewed by Cursor Bugbot for commit 93d6528. Bugbot is set up for automated code reviews on this repo. Configure here.

* Filter the listing and the revision listing by architecture, processor, platform vendor, silicon vendor, platform, system module, form factor, and board type
* Treat values in one field as OR and different fields as AND
* Match a board that is missing from the registry only for a lone platform id
* Read hardware_daily_builds and hardware_daily_tests, and offer dropdown values from that same window or checkout
* Keep the selection in the URL and document the parameters in the schema

Part of kernelci#2166

Assisted-by: Cursor Grok 4.7
Signed-off-by: Alan Peixinho <alan.peixinho@profusion.mobi>
* Show the hardware registry filters in the shared filters drawer
* Use compact checkbox chips, and a searchable multi-select once a section has more than 8 options
* Clear a multi-select with one control
* Drop the repeated select prompts and put duration min and max on one line

Part of kernelci#2161
Part of kernelci#2166

Assisted-by: Cursor Grok 4.7
Signed-off-by: Alan Peixinho <alan.peixinho@profusion.mobi>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 93d6528. Configure here.

FROM {table} daily
{checkout_join}
WHERE daily.{origin_column} = %(origin)s
{day_filter}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cross-origin listing drops build counts

Medium Severity

The daily listing filters builds by build_origin and tests by test_origin independently. Origins such as aspeed and ti attach tests to another origin's builds, so the hardware page keeps test counts but shows zero builds. The previous hardware_status path keyed rows by test_origin and kept those associated build totals.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 93d6528. Configure here.

choices.map(choice => [choice, selected.has(choice)]),
),
},
];

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hidden filters cannot be cleared

Medium Severity

Filter sections render only values returned by the options query. A selected value that is missing from those options stays in draft and the URL but never appears as a chip, and a field with no options is omitted entirely. After a revision, origin, or date change, an applied registry filter can empty the list with no control left to clear it.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 93d6528. Configure here.

@alanpeixinho

Copy link
Copy Markdown
Author

Opened against kernelci/dashboard main instead: kernelci#2192

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant