Editor de Rich Text em tópicos quebra caracteres de espaço em branco de várias maneiras

Olá a todos!

Neste tópico, farei referência a outros tópicos, mas acredito que descreverei um problema maior do que os outros relatórios mencionados.

Meu ambiente de teste

  • SO: MacOS 15.6.1
  • Navegador: Google Chrome 139.0.7258.140 (Build oficial) (arm64)

A observação original

Notei que o editor Rich Text no composer frequentemente quebra blocos de código. Os usuários começaram a postar seus códigos e logs em uma única linha, e eu pensei que eles cometeram um erro ao copiar seu conteúdo para o composer. Não havia caracteres de espaço em branco entre as linhas postadas, não apenas as quebras de linha.

Às vezes, os usuários postavam vários códigos de linha única, perdendo a indentação em um YAML. Às vezes, era um código multilinha destacado como uma única linha, às vezes era uma única linha em um bloco de código. Isso acontecia com muita frequência, então testei o modo Rich Text ontem, mas esperei para relatar. Hoje, não consegui reproduzir esse problema, mas encontrei outra maneira no editor Rich Text de quebrar as quebras de linha no código.

Não tinha certeza se era um bug, então discuti o problema com nossos moderadores, esperando a confirmação de que o bug foi corrigido. Então, descobriu-se que nem sequer encontramos o mesmo comportamento, mas todos os problemas estavam relacionados a espaços em branco. Exceto que não consegui reproduzir o problema mencionado por outro moderador, mas percebi que foi porque ele copiou o texto de um editor de código ou terminal, e eu copiei do meu próprio bloco de código anterior do fórum, então o problema de espaço em branco veio de forma diferente.

Diferentes maneiras de quebrar os espaços em branco em blocos de código

Primeira maneira

  • Copie uma saída de um terminal
  • Cole a saída no composer no modo Rich Text como este (parte da saída de runc sem argumentos)
    COMMANDS:
       checkpoint  checkpoint a running container
       create      create a container
       delete      delete any resources held by the container often used with detached
    
  • Você verá uma saída multilinha, mas a indentação é removida
  • Agora perceba que você quer um bloco de código e o transforme em um, selecionando o texto e clicando no botão Código.
  • Agora o código está um pouco estranho, porque parece código, mas não como um bloco de código. Mude para markdown para ver por quê e note isto:
    `COMMANDS:`
    `checkpoint  checkpoint a running container`
    `create      create a container`
    `delete      delete any resources held by the container often used with detached container`
    
  • Como você pode ver acima, cada linha do texto se tornou um código de linha única.
    (Obrigado @per1234 por vincular o relatório de bug relacionado abaixo Rich Text editor in topics breaks white-space characters in multiple ways - #2 by per1234)

Copie um código de outro tópico ou de outra postagem no mesmo tópico

Tópico existente que encontrei: `white-space` CSS property of clipboard data not respected when pasting in rich text editor

Claro, esta não é a maneira correta de copiar no Discourse, pois você tem um botão “Citar” para textos selecionados que geralmente funciona com partes de um bloco de código também, e você também tem um botão de cópia no canto de cada bloco de código, mas foi assim que notei o problema, e o botão de cópia também não funcionou.

  • Copie um código multilinha de uma página HTML
  • Cole-o no composer no modo Rich Text
  • Note que as quebras de linha sumiram
  • Neste ponto, você pode pensar que é apenas em HTML, então o transforme em código
  • As quebras de linha não voltaram

Use o botão Copiar no canto superior direito de um bloco de código em outra postagem

  • Mova o ponteiro do mouse sobre um bloco de código existente
  • Note que o pequeno botão “Copiar” apareceu no canto superior direito
  • Clique nesse botão para copiar o código
  • Cole-o no composer no modo Rich Text
  • As quebras de linha são mantidas, mas a indentação desaparece da mesma forma que aconteceu ao copiar diretamente do HTML.
  • Transforme-o em um bloco de código e obtenha vários códigos de linha única sem indentação

Problema provavelmente corrigido que aconteceu ao voltar para MarkDown

  • Escreva um bloco de código no editor Rich Text
  • Veja um bloco de código multilinha perfeitamente bom
  • Volte para MarkDown
  • Veja uma única linha em vez do bloco de código
  • Note que não é mais um bloco de código, mas se o texto for longo, você pode não perceber que a indentação também desapareceu
  • Transforme-o em um bloco de código
  • Poste e obtenha um bloco de código que contém uma única linha onde as quebras de linha são completamente removidas, nem mesmo um espaço é mantido

Novamente, este é o que não consigo reproduzir hoje, e não procurei notas de lançamento para ver se foi corrigido, mas também não consegui encontrar este problema relatado em outros tópicos.

Conclusão

Portanto, parece que o modo Rich Text tem problemas com blocos de código de várias maneiras. Isso dificulta a moderação, pois muitas vezes assumimos que um usuário não formatou sua postagem corretamente, então vinculamos nosso guia de formatação, que não funcionaria no modo Rich Text, mas esse não é o problema, pois os guias podem ser modificados. No entanto, os usuários realmente tentam formatar sua postagem e falham devido ao editor Rich Text.

Como o problema original que notei foi o que provavelmente já foi corrigido, parece que alguns usuários começaram com o editor Rich Text, não gostaram, mudaram para Markdown, perceberam que quebraram os blocos de código, tentaram consertar, mas não conseguiram e não colaram tudo novamente.

Neste ponto, eu também mencionaria este tópico sobre desativar completamente o editor Rich Text: How can i set disable Markdown & Default to Rich Text

Eu o vinculo porque este foi um dos primeiros tópicos que encontrei ao procurar relatórios existentes ontem, e acabei de mudar o padrão de volta para MarkDown. Paro aqui para evitar que alguém reaja a esta parte, e provavelmente adicionarei algumas notas no outro tópico.

PS.: Usei o recurso de revisão neste post. É incrível!

Há um relatório de bug dedicado aqui:

1 curtida

Obrigado! Achei que tinha dedicado tempo suficiente à pesquisa, mas não encontrei este.

Olá @rimelek, obrigado pelo relatório detalhado, nós o apreciamos.

Adicionamos isso em nosso backlog (e parte disso são assuntos nos quais já começamos a trabalhar), mas pode levar algumas semanas para chegarmos a isso.

3 curtidas

Fizemos algumas melhorias desde este relatório, principalmente a ação da barra de ferramentas está mais ciente do contexto entre inline/bloco e o suporte para ir e voltar entre vários parágrafos e um único bloco de código também.

Acho que o “problema” restante é que, se você colar texto simples no compositor e não houver identificação de que é texto pré-formatado, não poderemos criar automaticamente um bloco de código – por exemplo, ao copiar do meu terminal, ele apenas adiciona uma área de transferência plain/text, e precisaríamos de um text/html com um elemento pre para criar automaticamente um bloco de código no momento.

Você pode verificar se as coisas melhoraram desde então, por favor? E nos informe se ainda há algo que você acha que não está se comportando corretamente.

Obrigado!

2 curtidas