github / github/copilot-cli

Plan canvas markdown renderer: language-tagged code fence not closed by a bare closing fence, breaking rest of document

Aberta
#4,250 0 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Shell
Estrelas
11.2k
Forks
1.9k
Merge médio
14h 16min
PRs com merge (30d)
6

Descrição

### Summary

In the desktop app's **Plan** canvas (the built-in markdown viewer/editor), a fenced code block that has a **language info-string on its opening fence** (e.g. ` ```csharp `) is not closed by a bare closing fence (` ``` `). The renderer treats the bare closing fence as content and leaves the code block "open," so **the entire remainder of the document renders as code** — headings (`##`), blockquotes (`>`), lists, and inline code all stop being parsed as markdown.

Per the [CommonMark spec §4.5](https://spec.commonmark.org/0.31.2/#fenced-code-blocks), a closing code fence **must not** carry an info string; a bare ` ``` ` is the *correct* way to close a ` ```csharp ` block. VS Code (and GitHub itself) render all the variations below correctly, so the file is valid — the app's renderer is non-conformant.

### Repro

Open any `.md` file in the app's **Plan** panel containing:

- Opening fence with a language tag (` ```csharp `)
- Some code lines
- A bare closing fence (` ``` `)
- Followed by a heading / blockquote / more markdown

Observed behavior by variant (same content, only the fences changed):

| Opening fence | Closing fence | App Plan renderer | VS Code |
| --- | --- | --- | --- |
| bare ` ``` ` | bare ` ``` ` | Minor glitch: a stray ` ``` ` line leaks out, but content after the block recovers | ✅ correct |
| ` ```csharp ` | bare ` ``` ` | **Broken: bare closer not matched → the block never closes and the entire rest of the document renders as code** | ✅ correct |
| 4-space indented block (no fences) | n/a | ✅ correct | ✅ correct |

### Expected

A bare ` ``` ` closing fence should close a language-tagged opening fence (` ```csharp `), matching CommonMark and VS Code. Content after the block should resume normal markdown parsing.

### Actual

The language-tagged block is only closed by an identically-tagged fence; a spec-correct bare closer is swallowed as content, breaking rendering for everything below the block.

### Workaround

- Use an indented (4-space) code block instead of a fenced one, **or**
- Omit the language info-string so both fences are bare (this still leaks a stray ` ``` ` line but at least doesn't break the rest of the doc).

### Environment

- GitHub Copilot desktop app, version 1.0.71
- OS: Windows 11
- Surface: **Plan** canvas (markdown viewer/editor), `media=text/markdown`

### Notes

Screenshots demonstrating all three variants (app vs. VS Code side-by-side) are available and can be attached to this issue.

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Comece reproduzindo o problema no painel Plan do aplicativo para desktop com um arquivo Markdown contendo uma fence de abertura com tag de linguagem, uma fence de fechamento sem tag e conteúdo Markdown depois dela. A correção estará concluída quando a fence de fechamento sem tag encerrar o bloco fenced e os títulos, blockquotes, listas e código inline subsequentes forem renderizados normalmente, de acordo com CommonMark e VS Code.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
markdown
Domínio
content, desktop
Tipo de issue
Bug
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Pouca atividade
Clareza
Razoavelmente clara
Facilidade para iniciantes
55/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.