chore: improved index page - #1045
Conversation
avivkeller
commented
Aug 17, 2026
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1045 +/- ##
==========================================
- Coverage 89.57% 89.35% -0.22%
==========================================
Files 203 201 -2
Lines 19116 18876 -240
Branches 1790 1763 -27
==========================================
- Hits 17123 16867 -256
- Misses 1985 2002 +17
+ Partials 8 7 -1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
🚀 Deploying Preview to Cloudflare 🚀Preview Deployments by commit
|
|
| File | Main | PR | Change |
|---|---|---|---|
orama-db.json |
9.14 MB | 9.15 MB | +1.14 KB (+0.0%) |
Performance estimate (single CI run)
- Generation time: 16.1% slower (8.15 s → 9.46 s)
- Peak memory: 5.0% higher (1.77 GB → 1.86 GB)
web Generator
Output size: 151 files changed · net +15.22 KB
File size details
| File | Main | PR | Change |
|---|---|---|---|
assets/style-pZLnVIiN.css |
— | 138.17 KB | +138.17 KB |
assets/style-X45QCql_.css |
137.01 KB | — | -137.01 KB (-100.0%) |
assets/Layout-DK16eYcB.js |
9.69 KB | — | -9.69 KB (-100.0%) |
assets/Layout-BghgQ8nm.js |
— | 9.63 KB | +9.63 KB |
assets/404-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/addons-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/all-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/assert-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/async_context-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/async_hooks-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/buffer-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/child_process-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/cli-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/cluster-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/console-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/crypto-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/debugger-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/deprecations-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/dgram-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/diagnostics_channel-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/dns-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/documentation-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/domain-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/dtls-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/embedding-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/environment_variables-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/errors-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/esm-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/events-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/ffi-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/fs-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/globals-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/http-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/http2-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/https-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/index-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/inspector-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/intl-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/module-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/modules-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/n-api-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/net-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/os-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/packages-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/path-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/perf_hooks-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/permissions-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/process-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/punycode-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/querystring-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/quic-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/readline-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/repl-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/report-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/single-executable-applications-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/sqlite-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/stream-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/stream_iter-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/string_decoder-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/synopsis-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/test-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/timers-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/tls-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/tracing-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/tty-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/typescript-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/url-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/util-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/v8-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/vfs-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/vm-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/wasi-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/webcrypto-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/webstreams-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/worker_threads-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/zlib-CEFc8CjS.js |
— | 2.56 KB | +2.56 KB |
assets/404-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/addons-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/all-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/assert-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/async_context-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/async_hooks-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/buffer-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/child_process-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/cli-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/cluster-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/console-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/crypto-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/debugger-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/deprecations-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/dgram-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/diagnostics_channel-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/dns-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/documentation-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/domain-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/dtls-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/embedding-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/environment_variables-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/errors-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/esm-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/events-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/ffi-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/fs-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/globals-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/http-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/http2-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/https-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/index-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/inspector-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/intl-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/module-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/modules-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/n-api-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/net-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/os-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/packages-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/path-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/perf_hooks-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/permissions-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/process-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/punycode-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/querystring-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/quic-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/readline-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/repl-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/report-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/single-executable-applications-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/sqlite-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/stream-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/stream_iter-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/string_decoder-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/synopsis-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/test-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/timers-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/tls-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/tracing-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/tty-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/typescript-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/url-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/util-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/v8-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/vfs-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/vm-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/wasi-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/webcrypto-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/webstreams-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/worker_threads-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/zlib-BU1VoBd6.js |
2.37 KB | — | -2.37 KB (-100.0%) |
assets/DocumentationIndex-CZLkuVO1.js |
— | 770.00 B | +770.00 B |
assets/constants-bPj2oMK4.js |
— | 115.00 B | +115.00 B |
all.html |
31.74 MB | 31.74 MB | -106.00 B (-0.0%) |
Performance estimate (single CI run)
- Generation time: 2.1% slower (86.51 s → 88.34 s)
- Peak memory: 0.0% higher (4.72 GB → 4.72 GB)
|
Can we maybe clamp the descriptions to 3 or 4 lines? And perhaps allow the rest to show via overflow (not shifting the grid layout) on hover? Can we move the cards up to be before the contributing + stability index headings? I think for most folks hitting the docs, the primary action/path is going to be wanting to find a section of the docs? |
| const ariaLabel = STABILITY_TOOLTIPS[stability] | ||
| ? `Stability: ${STABILITY_TOOLTIPS[stability]}` | ||
| : undefined; | ||
| const label = STABILITY_LABELS[stability]; |
There was a problem hiding this comment.
| const label = STABILITY_LABELS[stability]; | |
| const [label] = STABILITY_LABELS[stability] ?? []; |
| tabIndex={0} | ||
| > | ||
| {STABILITY_LABELS[stability]} | ||
| {label?.[0]} |
There was a problem hiding this comment.
The suggestion I made on line 25 makes this line better imo
| * @see https://nodejs.org/api/documentation.html#stability-index | ||
| */ | ||
| export const STABILITY_KINDS = ['error', 'warning', 'default', 'info']; | ||
| export const STABILITY_LABELS = [ |
There was a problem hiding this comment.
Don't we have already these constants somewhere? Like on @node-core/ui-components?
| * | ||
| * @see https://nodejs.org/api/documentation.html#stability-index | ||
| */ | ||
| export const STABILITY_KINDS = ['error', 'warning', 'default', 'info']; |
There was a problem hiding this comment.
I'd argue this is STABILITY_TYPES and I'd probably argue the Labels Array and Kinds should be a Map where the pair key is the Label and the value the Badge Type. Also adding a comment that these = type of UI Badges we have and maybe ensure it follows types that are supported by our Badges would also be good.
| name: 'CodeTabs', | ||
| source: resolve(ROOT, './ui/components/CodeTabs'), | ||
| }, | ||
| DocumentationIndex: { |
There was a problem hiding this comment.
Is this DocumentationIndex sort of component just for Node, or going to be kinda part of standard doc-kit components? I feel that all the components doc-kit exposes on our web generator should be documented under the web generator docs [...]
I also feel tha this name "DocumentationIndex" doesn't really say what this component renders, can we have a more descriptive name for the component, tgat'd b great
There was a problem hiding this comment.
It's a standard doc kit component. The name DocumentationIndex is fairly descriptive of what the component does: Documentation Index
There was a problem hiding this comment.
I unfortunately disagree. "Documentation Index" isn't fairly descriptive, and doesn't say what is rendered. What is in this "documentation index"? I feel that a proper name is "StabilityOverview" or "DocumentationModulesOverview" or something more descriptive.
| }, | ||
| }; | ||
|
|
||
| // `<!-- DOCUMENTATION_INDEX -->` comment in a source document = a stability index |
There was a problem hiding this comment.
nit: add a todo that we aim to remove this from node-core, or that it follows our standard doc-kit YAML syntax.
We might need to expand our spec on the supported type of slots, sinca our YAML snippets are "slots" that add metadata to render certain things, we might as well have something that is either just MD-compatible/doc-kit spec compatible or MDX-compatible (even if strictly not MDX)...
There was a problem hiding this comment.
Or we outright just say that doc-kit spec extends CommonMark and the MDX spec. 🤷 since we're already using remark [...], recma [...] probably we could just support mdx, and support .mdx extensions to files in case they want to add MDX content.
I think that makes much sense and allows more customization to the pages by downstream consumers of doc-kit.
There was a problem hiding this comment.
We do support MDX. I can probably replace the comment with an MDX component.
There was a problem hiding this comment.
Cool, that can be follow-up as require change on node core.
There was a problem hiding this comment.
-1 on a follow-up. I'll do it here, and update our beta script to make that change, and that can be the TODO, rather than an implementation that is going to be replaced based on one consumer's need.
There was a problem hiding this comment.
I don't understand. The source YAML annotation is in node core. I don't think that we should do a hack here to go around that. We can proceed as is, and then add the feature here, and then migrate it over there.
There was a problem hiding this comment.
I'd rather make a "hack" to replace the <!-- --> syntax of Node core with a <XYZ /> to go around that then write the entire component in a format that will be changed in a follow-up
There was a problem hiding this comment.
I understand you'd do that on a bash script, but I'm unsure about the precedent of that, plus that feels more like doing a monkey patch. I'm not particularly against, just saying that it isn't a good thing to do in general.
| // Sections tagged with a `<!-- DOCUMENTATION_INDEX -->` comment (e.g. in | ||
| // the `index` document) receive the Stability Overview of all modules. | ||
| injectDocumentationIndex(input, moduleInput); | ||
| // Sections tagged with a `<!-- DOCUMENTATION_INDEX -->` build an index |
There was a problem hiding this comment.
See, this is what I don't like. I hope in the future, based on my comment above can alllows us to avoid such specific logic for this sort of scenarios 😅
| * | ||
| * @param {Array<import('@doc-kit/core/generators/metadata/types').MetadataEntry>} moduleEntries | ||
| */ | ||
| const buildDocumentationIndex = moduleEntries => |
There was a problem hiding this comment.
I genuinely feel we gotta call this something else, I'd also argue it shouldn't be the responsibiliy of this generator to take care of this, but the web generator. That said, I'm fine as this as a temporary solution. But we gotta add deprecated and todo marks and open an issue to keep track of remaining changes.
ovflowd
left a comment
There was a problem hiding this comment.
I'm fine SGTM'ing this, but with big caveats that this is temporary and requires proper changes on the long-term 🙇

