[Bug]: Markdown generation discards content inside Tabs components
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 75/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- markdown
- Ambito
- documentation
Direzione di ricerca
Inizia da src/pages/[...path].md.ts per seguire la route Markdown pubblica fino a transformPageToMarkdown(), quindi esamina src/lib/markdown/transformMarkdown.ts, in particolare la regola di pulizia intorno alle righe 211–224 e gli handler dei componenti esistenti. Mantieni sequenzialmente ogni etichetta e pannello di Tabs nel Markdown generato, elabora i componenti annidati come CodeSample e aggiungi test che confermino che tutto il contenuto delle schede rimanga presente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
The generated .md pages omit content placed inside interactive Tabs components, creating content-parity differences between the rendered documentation and the agent-facing Markdown representation.
After previously documenting the affected pages in an agent experience audit, I encountered a similar parity issue in another documentation project. Investigating that project revealed a serialization problem, so I examined Chainlink's Markdown-generation pipeline for a comparable cause.
Chainlink's public .md route is implemented in:
The route reads the source MDX and passes it to transformPageToMarkdown(). The conversion logic is implemented in:
src/lib/markdown/transformMarkdown.ts
The transformer provides handlers for selected MDX components, including Aside, CodeSample, and CcipCommon. However, it does not provide a serialization handler for Tabs, TabsContent, or their slotted Fragment children.
The cleanup rule subsequently removes unsupported MDX flow components:
[transformMarkdown.ts, lines 211–224]
(https://github.com/smartcontractkit/documentation/blob/main/src/lib/markdown/transformMarkdown.ts#L211-L224)
When a Tabs component is removed, its Fragment panels and their commands, tables, code samples, warnings, and expected outputs are removed with it.
For example, this source structure:
<Tabs client:visible>
<Fragment slot="tab.1">Starter kit</Fragment>
<Fragment slot="tab.2">Manual</Fragment>
<Fragment slot="panel.1">
Starter-kit instructions
</Fragment>
<Fragment slot="panel.2">
Manual instructions
</Fragment>
</Tabs>
produces a Markdown representation containing neither implementation path.
To Reproduce
-
Open the rendered LockRelease Token Pool documentation page:
https://docs.chain.link/ccip/tutorials/canton/cross-chain-tokens/lock-release-token-pool -
Navigate to Step 1: Deploy the LockRelease Token Pool.
-
Confirm that the page contains Starter kit and Manual tabs with deployment instructions.
-
Open the corresponding Markdown page:
https://docs.chain.link/ccip/tutorials/canton/cross-chain-tokens/lock-release-token-pool.md -
Locate the same Step 1 section.
-
Observe that the Markdown moves from the introductory paragraph directly to Transfer-fee fields, omitting both tab panels.
-
Inspect the source MDX:
https://github.com/smartcontractkit/documentation/blob/main/src/content/ccip/tutorials/canton/cross-chain-tokens/lock-release-token-pool.mdx -
Inspect the unsupported-component cleanup rule:
https://github.com/smartcontractkit/documentation/blob/main/src/lib/markdown/transformMarkdown.ts#L211-L224
URLs
Representative page:
- Rendered page:
https://docs.chain.link/ccip/tutorials/canton/cross-chain-tokens/lock-release-token-pool - Markdown page:
https://docs.chain.link/ccip/tutorials/canton/cross-chain-tokens/lock-release-token-pool.md - Source MDX:
https://github.com/smartcontractkit/documentation/blob/main/src/content/ccip/tutorials/canton/cross-chain-tokens/lock-release-token-pool.mdx
Expected behavior
The Markdown transformer should preserve every tab label and its corresponding panel content.
Because Markdown is not interactive, each tab could be serialized sequentially as a labeled section. Nested components, such as CodeSample, should then be processed by their existing handlers.
No tab panel should be silently discarded.
Additional context
All affected pages are documented here: https://github.com/manueldezman/chainlink-documentation-audit.
I would be happy to submit a focused PR that adds serialization support for Tabs, TabsContent, and their Fragment panels, along with automated tests confirming that every tab label and panel remains present in the generated Markdown.
- Lingua principale
- MDX
- Stelle
- 528
- Fork
- 478
- Merge medio
- 18h 3m
- PR unite (30g)
- 85
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di smartcontractkit/documentation
-
bug triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
smartcontractkit/documentation#4154 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
smartcontractkit/documentation#4114 ·
I maintainer di solito rispondono entro 1 giorno
-
bug triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
smartcontractkit/documentation#1505 ·
I maintainer di solito rispondono entro 1 giorno
-
GHA-data-validate-urls: Invalid URLs DetectedForse già presa @khadni l’ha presa 4 giorni fa. Apertabug gh-action-data
smartcontractkit/documentation#4222 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
GHA-data-validate-urls: Invalid URLs DetectedForse già presa @khadni l’ha presa 13 giorni fa. Apertabug gh-action-data
smartcontractkit/documentation#4188 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di smartcontractkit/documentation
Issue simili
-
area:docs good first issue P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
uttrflow/uttrflow-swift#3445 ·
I maintainer di solito rispondono entro 1 giorno
-
adr
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
kristofdegrave/homeassistant-smart-charging#1607 ·
I maintainer di solito rispondono entro 1 giorno
-
Feature
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
Narezzurri/OpenVPN-Config-Manager#95 ·
I maintainer di solito rispondono entro 1 giorno
-
FAQ- what is an NHS EmployerAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
doc good first issue help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
collective/icalendar#1865 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno