node-red: serve /node-red/ from Nuxt - #5793
Conversation
✅ Deploy Preview for flowfuse-website ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
33374fd to
47d04d2
Compare
|
Preview affected pages: |
47d04d2 to
e276176
Compare
e276176 to
dfc43f5
Compare
|
Rebased on Three fixes from the review pass over the whole migration:
Also dropped a page-comment bullet claiming the 11ty layout emitted an empty second |
dfc43f5 to
037a9ca
Compare
|
Rebased onto |
The rest of that prefix (the core-node reference and the hardware guides) already moved into /docs/; this was the last page under it. The certified-nodes grid was driven by src/_data/certifiedNodes.js, whose own comment said it "deliberately duplicates the fetch rather than importing across the boundary" while the site was mid-migration. That boundary is gone: the page reads /api/certified-nodes, which derives the list from the same two feeds nuxt/utils/integrations.ts already fetches for /integrations/. The data file goes away with 11ty. fetchCatalogue() could not be used directly: it merges the certified feeds with the npm catalogue and the flowfuse-nodes feed, and tags that last group `certified` too, so filtering its result by tier returned 9 nodes where the two certified catalogues hold 5. fetchCertifiedCatalogues() is exported for exactly those two. Display names are title-cased from the id rather than taken from `name`, which normalizeCatalogueModule fills with the id's last segment when the feed carries none - as all of these do - so the cards read "Modbus" and "RTSP" rather than "modbus" and "rtsp". BlogFaq's renderer gained ordered and unordered list support, unit tested. Two answers here carried <ol>/<ul> markup under `| safe`, and a list cannot sit inside the <p> the renderer used to emit, so the component now renders a list block bare. Two malformed bits of markup fixed: the hero opened a stray <p> with no closing tag (HTML auto-closes it, Vue's compiler does not), and the page rendered a second, empty <h1> from layouts/page.njk's `nohero` branch. Verified against production, with no structural differences.
037a9ca to
d10e15a
Compare
|
Rebased onto |
|
Nothing to change here, one note. It was flagged on three of these PRs and is actually missing on eight, so it is fixed in one place in #5815 rather than eight conflicting edits to the same file. Merge that one after this, since registering a section before its pages land points dev at a Nuxt route that does not exist yet. |
Without the prefix the dev middleware keeps proxying to 11ty, so npm run dev shows the old page. The middleware returns early unless NODE_ENV is development, which is why CI and the deploy preview both looked correct. Its index is a Nuxt page now, so the carve-out that deliberately kept just /node-red on 11ty while /node-red/* went to Nitro is no longer needed.
|
Correction to my earlier comment: #5815 is closed, the registration belongs in each migration PR instead. Pushed here. It also drops the carve-out that kept |
The nine glyphs the page names are stock Heroicons, so the keys in the two data lists become iconify names and the call sites become <UIcon>, each carrying its own size since the mask span has no intrinsic ratio. certified-node is the exception and does not become a <UIcon>: it already has IntegrationsCertifiedIcon, and .certified-icon sets fill and stroke and overrides the size inside .certified-eyebrow, none of which reach a mask span. Reusing that component keeps the rendering identical.
|
Cross-PR pass over the four patterns. Two applied:
One deliberate exception: No |
# Conflicts: # nuxt/nuxt.config.ts # nuxt/server/middleware/legacy.ts
|
Conflicts resolved, main is merged in. Same shape as the other migration PRs: the registry files take the union, so |
# Conflicts: # nuxt/server/middleware/legacy.ts
# Conflicts: # nuxt/server/middleware/legacy.ts
|
@macroscope-app review |
|
Manual reviews triggered for commit All prior checks · these links stay valid even if you push more commits. |
|
Review started; results will be posted when complete. |
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This replaces the live Not approved because:
A repo admin can enable approvability here. You can add or adjust custom eligibility rules. Learn more. |
# Conflicts: # nuxt/server/middleware/legacy.ts
|
@Yndira-E @KristopherLeads PR conflicts are resolved. |
|
@dimitrieh They are back :) But also check out: #5793 (comment) |
# Conflicts: # nuxt/server/middleware/legacy.ts
The name overrides, the one-card-per-collection split, the docs fallback and the sort move out of the Nitro handler into nuxt/lib/certified-nodes.mjs, so `npm test` covers them. The handler keeps the fetch and reuses COLLECTION_LABELS from types/integrations instead of its own copy of the same map.
main's /platform/device-agent/ rebuild replaced its install block with
<DeviceAgentInstallTabs> and deleted <DeviceAgentInstallCommands>, which /node-red/ still
renders. Keep that component as /node-red/'s own, as main's edit to the .njk include
("used by /node-red/") intended, and drop the "shared with /platform/device-agent/"
notes. The .njk include loses its last user with src/node-red/index.njk, so it goes too.

Description
Moves
/node-red/to Nuxt.The certified nodes grid is derived from the two certified catalogue feeds the integrations code already fetches, instead of a second copy of that fetch. Names come from the package id, so acronyms print as
OPC UAandRTSPrather than lowercase slugs.Related Issue(s)
Part of #5777
Checklist
Note
Serve
/node-red/from Nuxt and remove legacy 11ty page/node-red/is Nuxt-owned in both development and production./api/certified-nodesinstead of generated at build time; if the API returns no cards, the section is omitted entirely.Macroscope summarized 8992cd1.