The licence surface comes from the kit - #453
Merged
Merged
Conversation
The badge and the vendored-licence body ship in @galaxy-foundry/site-kit; the
policy table's file-id helpers were renamed in 0.4 so the two id spaces stop
sharing a word. Adopt both.
What was ours and stayed ours: which notes redistribute under a copy (our
corpus is one flat collection at /{id}/), the page's <h1>, and the box around
the chips — the obligations line is what this note owes, not what the licence
permits.
Three colours stop being literals inside a component and become theme, so
built-shell asserts the tokens arrive. Dropping one fails it; nothing else
would, because an undeclared property inside color-mix() renders a chip with
no background and no error.
Two visible changes. The name chip reads the table's `name` column, so
Apache-2.0 renders as "Apache 2.0" with the SPDX id on hover. And bare URLs
in a licence text are now links — planemo's CONTRIBUTORS.md was a string a
reader had to retype.
The adoption dropped our <h2>License text</h2> — the shared body had followed the sibling instance, which never had one, leaving the licence inside the "Redistributed by" outline. Fixed upstream rather than patched back here, so both instances get the heading.
This was referenced Aug 6, 2026
jmchilton
added a commit
that referenced
this pull request
Aug 8, 2026
site-kit 0.7.0 ships two more specimen groups, and the coverage check stops the build until this page has an opinion about both. Both inline, both on the props the kit ships and nothing added: unlike the reference card, whose kinds are ours, the policy table is not — registries.ts gets it from bundledPolicy() and so do the specimens, so there is no second group to author. What the badge group is for is the ids. Every note here that declares a licence names MIT or Apache-2.0, and the four cases the chips' colours exist to tell apart are the four the corpus does not carry. The badge is also the first specimen whose props coincide with a real page's. #453 put LicenseBadge in every note's licence box, so the same component now renders on both surfaces in one built site under one stylesheet, and the new test compares the markup byte for byte on every page carrying a licence both sides have. That is the claim the reference gallery cannot make. It fails on the plausible repair: a gallery that stopped compiling is quickest fixed by writing the four lines of chip markup here instead of importing them, and nothing else would go red. Today that is MIT and nothing else, which the test says out loud rather than implying it covered the group. LicenseFileBody gets no version of it: the kit's file specimens invent four copies this repo does not redistribute, so there is no overlap to compare.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The licence chips beside a note and the vendored-licence page were written here and written again in a sibling instance. Both now ship in
@galaxy-foundry/site-kit, and@galaxy-foundry/license-policy0.4 renames the file-id helpers so the two id spaces stop sharing a word. This adopts all of it.The rename found four pins, not three
licenseIdFromFilePath→licenseFileIdFromPath, andLicenseFile.licenseId→LicenseFile.id. There are two id spaces:LicenseIdis SPDX (MIT),LicenseFileIdis the stem of a vendored copy (planemo). The old names claimed the second was the first, solicenseIdFromFilePathreturnedplanemoand every reader had to already know that.Bumping the range broke the build in exactly the eight places that held the confusion. It also surfaced a pin I would not have gone looking for: the root
package.jsoncarriedlicense-policyat^0.3.0alongsidesite/and two workspace packages. A caret on a0.xversion pins the minor, so the test side and the site side would have resolved different copies of the table.What moved and what did not
LicenseBadge)obligationsline inside itLicenseFileBody)/{id}/redistributesUnder,licenseFileHref,LICENSE_FILE_ROUTE<h1>and eyebrowThe obligations line stays because it answers a different question than the badge does. What a licence permits travels with the licence; what this note owes for using it is ours. That is the line the policy table's own header comment draws, and it is why the badge reads
licenseand nothing else — nolicense_file, no attribution, no link.redistributesUnder(note.license_file, licenseFile.id)replaces an equality between two things both calledlicenseId. Cross-checked against the old filter on built output: galaxy 3, galaxy-tool-util-ts 5, nf-core-modules 2, nf-schema 1, planemo 1, cwl-v1.2 0 — identical, including the copy no note uses.Three literals became theme, and the test is new
#16a34a,#d97706and#dc2626lived inside the component that drew them, here and in the sibling — the same three values, typed twice. The component names--color-license-*now, and this repo declares them.That substitution fails silently: an undeclared custom property inside
color-mix()yields a chip with no background and no error. Legible text, no colour, a page that looks designed rather than broken. Sobuilt-shell.test.tsassertslicenseBadgeStyleGapsandlicenseFileStyleGapsagainst the emitted stylesheet. Deleting one token fails it and names the token — checked, not assumed.Note this is the opposite direction from the dead-token assertion already in that file. That one catches a token declared and referenced by nothing; this one catches a token referenced and declared by nothing. Neither implies the other.
Two visible changes
The name chip reads the table's
namecolumn.Apache-2.0renders as "Apache 2.0", with the SPDX id kept as the chip'stitle.nameequals the id in 1 of 23 rows, so rendering the id is legible right up until it isn't — the sibling instance has aLicenseRef-arXiv-nonexclusive-distrib-1.0that becomes a pill teaching a reader nothing. Our corpus carries only MIT and Apache-2.0, so this is the whole of the change here.Bare URLs in a licence text are now links. The sibling did this; we shipped a
<pre>a reader had to retype from.planemo.LICENSEpoints atCONTRIBUTORS.mdand that was a string. Everything outside a matched URL is emitted verbatim, whitespace included, which is what thelicense_fileobligation is for.The regression this branch caused and then didn't ship
The first commit dropped our
<h2>License text</h2>— the shared body had followed the sibling, which never had one, leaving the licence inside the "Redistributed by" outline. A reader moving by heading would land on a list of notes and find the terms somewhere past the end of it.Fixed upstream (jmchilton/foundry-lib#70) rather than patched back here, so the sibling gets the heading too, and taken as
site-kit@0.6.1in the second commit. Verified on built output: all six licence pages carry it,cwl-v1.2included — the page with no note list at all, which is the case that would have regressed if the heading had been hung off the note-list section.Verification
303 tests across 21 files.
astro check0 errors over 69 files.packages-typecheck,packages-test, andpnpm validateat 0 errors across 242 files. The 49 validator warnings are pre-existing (eval.md/scenarios.mdon molds and pipelines).lintandformatin this repo coverpackages/*only; nothing here touches those trees.