Blank lines in a fenced code block inside a custom tag render as `<!---->`
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 82/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- markdown, react, typescript
Direzione di ricerca
Inizia da packages/streamdown/lib/preprocess-custom-tags.ts e riproduci il problema utilizzando gli esempi statici e di streaming forniti. Aggiorna la gestione di \n\n in modo che il contenuto dei blocchi di codice venga preservato mentre i tag personalizzati rimangano protetti dalla divisione in blocchi. Verifica che le righe vuote all’interno dei blocchi di codice vengano renderizzate normalmente, anche mentre il tag è ancora aperto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What happens
When a tag listed in allowedTags wraps multi-line content that contains a fenced code block, every blank line inside the code block is shown as the literal text <!----> in the rendered code. The same happens while streaming, when the tag is not closed yet.
What should happen
The code block should keep its blank lines and show exactly the code that was written.
Minimal repro
<Streamdown allowedTags={{ note: [] }} mode="static">
{"<note>\n```js\nconst a = 1;\n\nconst b = 2;\n```\n</note>"}
</Streamdown>
The code block renders three lines: const a = 1;, <!---->, const b = 2;.
Calling the preprocessor directly shows the cause:
preprocessCustomTags("<note>\n```js\na\n\nb\n```\n</note>", ["note"]);
// "<note>\n\n```js\na\n<!---->\nb\n```\n\n</note>\n\n"
Root cause
preprocessCustomTags (packages/streamdown/lib/preprocess-custom-tags.ts) replaces every \n\n in a custom tag body with \n<!---->\n so the tag is not split into separate blocks. The replacement does not skip fenced code, where an HTML comment is not markup but literal text. A blank line inside a fence cannot end the surrounding HTML block anyway, so it does not need the placeholder.
- Lingua principale
- TypeScript
- Stelle
- 5.7k
- Fork
- 313
- Merge medio
- 3g 19h
- PR unite (30g)
- 27
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 vercel/streamdown
-
remend: unclosed `$$` in a table cell is closed on a new line when an earlier line has mathForse già presa @orinnz l’ha presa 20 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
vercel/streamdown#652 ·
I maintainer di solito rispondono entro 1 giorno
-
Raw HTML ids reach the DOM unprefixed since clobberPrefix was disabled in rehype-sanitize (2.6.0)Forse già presa @umeraamir69 l’ha presa 1 giorno fa. Aperta
Difficoltà 3/5 Mezza giornata Idoneità per principianti 62/100
vercel/streamdown#694 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 50/100
vercel/streamdown#686 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
The word-fade engine ships with every app, whether or not it animatesForse già presa @xyrolle l’ha presa 6 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 1/100
vercel/streamdown#681 ·
I maintainer di solito rispondono entro 1 giorno
-
Mermaid's UI ships in the main bundle although the chart is lazy-loadedForse già presa @xyrolle l’ha presa 6 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 20/100
vercel/streamdown#679 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di vercel/streamdown
Issue simili
-
area:agent-view area:tui bug platform:macos
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
anthropics/claude-code#104558 ·
I maintainer di solito rispondono entro 1 giorno
-
updater
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
UniversityOfHelsinkiCS/oodikone#5141 ·
-
maintanance
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
inmanta/web-console#7606 ·
I maintainer di solito rispondono entro 1 giorno
-
bug skills
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
equinor/fusion-framework#5846 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 74/100