Skip to content

feat: publish the catalog as a page built from the repository - #51

Merged
HuggeK merged 3 commits into
mainfrom
driver-catalog-page
Jul 30, 2026
Merged

feat: publish the catalog as a page built from the repository#51
HuggeK merged 3 commits into
mainfrom
driver-catalog-page

Conversation

@HuggeK

@HuggeK HuggeK commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

The drivers were only browsable by reading 80 manifests. This publishes a catalog page anyone can search by manufacturer or model number, at https://srcfl.github.io/device-drivers/ once this merges.

tools/generate_site.py builds it from manifests/, drivers/lua/, support-status.json and driver-history.json, and .github/workflows/pages.yml republishes it on every push to main. No rendered copy is checked in — site/ is gitignored — so the page cannot fall behind what a host installs.

What it shows

  • 80 drivers, 69 manufacturers, 171 model families, 656 listed variants.
  • Search across driver id, manufacturer, model number, protocol and notes — typing SH10RT finds sungrow.
  • Filters for device type, protocol, tier, control and hardware verification.
  • A by device view grouping every tested model family under its manufacturer, each linking back to the driver that covers it.
  • Per driver: the description, the tested-model table with variants, regions and min_driver_version, the per-target conformance and HIL state, the source sha256, and links to the Lua source and manifest.
  • drivers.json beside the page, for anyone who wants the catalog as data.

The evidence is the point

A catalog that shows 80 logos implies 80 working integrations. This one carries the claim each driver actually makes. 5 drivers say they have run on physical hardware; 28 say in their own verification_notes that they have not, most of them "ported from a reference implementation". The page renders production and tested as confirmed, beta and alpha as partial, and experimental as not verified on hardware — never as a single green tick.

tests/test_site.py fails the build if any driver's status is rendered as a stronger claim than the source makes, and if a manifest, version, tier, control flag or tested model goes missing from the page.

Where the words come from

38 drivers carry a DRIVER = { ... } table with a description, homepage and verification record. The other 42 describe themselves in a header comment, which is quoted verbatim under "From the driver source" rather than paraphrased into a second copy that could drift from the code. Nothing on the page is typed by hand.

GitHub Pages setup

Pages is already enabled on this repository with build_type: workflow, and the github-pages environment exists, so no settings change is needed — merging this fires the first deploy to https://srcfl.github.io/device-drivers/.

actions/configure-pages still runs with enablement: true. That is a no-op while Pages is on and correctly configured; it is kept so the workflow re-enables itself rather than failing if the setting is ever reset.

Checked
  • pytest tests/test_site.py — 8 tests pass.
  • Full suite: 1927 pass. The 10 failures are pre-existing and environmental on Windows (missing ./lua55, which make check builds, and bash path handling); none touch these files.
  • tools/check_public_boundary.py passes.
  • Rendered in Chrome at 1440 px, 768 px, 414 px and 360 px. No horizontal page scroll at any width; the model tables scroll inside their own box rather than widening the page.
  • Page renders a full driver list inside <noscript>, so it works without JavaScript.

🤖 Generated with Claude Code

claude and others added 3 commits July 30, 2026 12:34
The drivers were only browsable by reading 80 manifests. This adds a
catalog page that anyone can search by manufacturer or model number,
built by tools/generate_site.py from the manifests and the Lua sources
themselves and republished on every push to main. No rendered copy is
checked in, so the page cannot fall behind what a host installs.

The hard part is not the list, it is the evidence. A catalog that shows
80 logos implies 80 working integrations. This one carries the claim the
driver actually makes: 5 drivers say they have run on physical hardware,
28 say in their own verification_notes that they have not, and each
driver's per-target conformance and HIL state are shown beside it.
tests/test_site.py fails the build when a status is rendered as a
stronger claim than the source makes, and when a manifest, version or
tested model is missing from the page.

Titles and summaries come from the drivers too: 38 carry a DRIVER table
with a description, the other 42 describe themselves in a header comment
that is quoted verbatim rather than paraphrased into a second copy that
could drift.

Signed-off-by: Hugo Karlsson <48095810+HuggeK@users.noreply.github.com>
Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
lua_string_list() read `key = { "a", "b" }` fields for tested_models and
capabilities. Both were dropped before the first commit — the manifests
already carry the tested models, and capabilities restate the DER list —
so the helper was left with no callers.

Signed-off-by: Hugo Karlsson <48095810+HuggeK@users.noreply.github.com>
Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
Rebasing onto main carried this entry along inside the Added group it
was written in, next to BLUEPRINT.lua, which now reads as though the
catalog shipped in that batch. [Unreleased] prepends a group per merged
change, so it belongs at the top.

Signed-off-by: Hugo Karlsson <48095810+HuggeK@users.noreply.github.com>
Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
@HuggeK
HuggeK force-pushed the driver-catalog-page branch from 7c19d46 to 6f8eab7 Compare July 30, 2026 10:37
@HuggeK
HuggeK merged commit 75476d1 into main Jul 30, 2026
5 checks passed
@HuggeK
HuggeK deleted the driver-catalog-page branch July 30, 2026 10:40
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.

2 participants