Hardware page refactor
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 9
- Forks
- 31
- Avg merge
- 3d 19h
- Merged PRs (30d)
- 16
Description
Background
KernelCI dashboard has two main listing pages:
/tree-- kernel trees/branches being tested/hardware-- hardware boards being tested
This document covers the redesign of the /hardware listing page only. The detail page (/hardware/$hardwareId) is out of scope and will be a separate effort.
Current State
Listing Page (/hardware)
- Paginated table with columns: Platform, Compatibles, Build status, Boot status, Test status
- Origin dropdown in TopBar filters all data to a single lab/data-source
- Time range = rolling window relative to now (
?intervalInDays=N) - Sorted alphabetically by platform ID
- Platform IDs are raw identifiers (e.g.
am62-sk,arm-juno-r2)
Key files in the dashboard repo
dashboard/src/pages/Hardware/HardwareListingPage.tsx-- main listing componentdashboard/src/pages/Hardware/HardwareTable.tsx-- table with columns and paginationdashboard/src/components/TopBar/TopBar.tsx-- contains OriginSelect componentdashboard/src/api/origin.ts-- fetches available originsdashboard/src/pages/hardwareDetails/HardwareDetails.tsx-- detail page (out of scope)
Problems to Solve
1. Cross-origin view
Current behavior: The Origin dropdown scopes ALL data to a single lab. If you select "maestro", you only see hardware tested by maestro.
Problem: Hardware coverage should be reported across all labs. A board is either tested in KernelCI or it isn't -- the lab that tests it is secondary.
Proposal:
- Default view shows hardware aggregated across all origins
- Origin is demoted from a global TopBar control to an optional filter (alongside vendor, architecture, board type, etc.)
- Lab owners can filter to their own origin when needed, but it is not the top-level scope for the page
2. Historical navigation
Current behaviour: Time range is always relative to now (last N days). No way to pin to a past kernel release.
Important clarification: The intervalInDays filter only widens/narrows the collection window for test results submitted against the latest commits - it does NOT navigate to older commits. Since test results are submitted shortly after a kernel build, this filter adds no meaningful value. (extending number of days may find more builds in other trees that have not been tested recently)
Proposal:
- Remove the
intervalInDays/ calendar days filter entirely - Add tree/kernel version tag selector (e.g.
v6.12,v6.13-rc1) as the navigation control for the listing page - Commit-level navigation stays on the detail page only
- No calendar date navigation
3. Hardware registry integration
Registry location: https://github.com/kernelci/kernelci-pipeline/tree/main/config/hardware_registry
Schema summary (schema.yaml):
silicon_vendors: chip manufacturers (id, url, details)
platform_vendors: board manufacturers (id, url, details)
processors: SoCs (vendor_id, architecture, cores, max_clock_speed_mhz, url, details)
system_modules: optional SoM/SiP layer (vendor_id, processor_id, form_factor)
platforms: boards (type, vendor_id, processor_id, system_module_id, url, details)
Platform types: evaluation_board, single_board_computer, development_board, reference_board, product_board, industrial_gateway, laptop, desktop
Key insight: Platform IDs in the registry (e.g. am62-sk) match the platform field in KernelCI API data -- the join is direct.
Currently covered: TI boards only (ti.yaml). More vendors expected over time.
Proposal: Boards with registry entries get enriched display. Boards without entries still appear with raw platform ID and test data. This creates an incentive for vendors to contribute registry entries.
Fields to surface on the listing page:
| Registry field | Display purpose |
|---|---|
| platform_vendors[vendor_id].id / details | Vendor name, grouping |
| processors[processor_id].architecture | Architecture badge (arm64, arm, x86...) |
| processors[processor_id].id + url | SoC name with link to datasheet |
| platforms[id].type | Board type badge (eval board, SBC...) |
| platforms[id].details | Human-readable description |
| platforms[id].url | Link to vendor product page |
Audience
Mixed -- the page must serve all of these:
- Kernel developers -- checking if patches broke something on specific hardware
- Hardware vendors (e.g. TI) -- monitoring their boards' test health over time
- Lab operators -- checking coverage and test infrastructure
- External companies -- evaluating hardware for Linux-based product designs; they need a catalog-like experience with human-readable info, not just test counts
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with dashboard/src/pages/Hardware/HardwareListingPage.tsx and HardwareTable.tsx, then trace OriginSelect in dashboard/src/components/TopBar/TopBar.tsx and the origin API. Read the hardware_registry schema and compare its platform IDs with the listing data. Done means the listing supports cross-origin aggregation, kernel-version navigation, optional origin filtering, and registry-enriched boards while keeping unregistered boards visible.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100