CSS personalizado não está sendo aplicado ao meu Discourse

A partir da atualização de ontem (do meu servidor hospedado em https://doomemacs.discourse.group), nenhum dos meus CSS personalizados está sendo aplicado. Alterações no meu tema(s) ou no CSS dos componentes não têm efeito (embora alterações no <head> ou em outras seções HTML funcionem normalmente).

Há uma tag link suspeita apontando para uma folha de estilo vazia, cujo hash muda toda vez que altero meu CSS. Parece que o Discourse está falhando silenciosamente ao compilar minhas folhas de estilo. Não há menções de falhas nos meus logs de erro e o discourse_theme faz o upload das minhas folhas de estilo sem reclamar, mas sem nenhum efeito.

Alguém da administração poderia, por gentileza, dar uma olhada?

3 curtidas

~~Não tenho certeza, mas acho que você pode estar enfrentando essa alteração https://meta.discourse.org/t/restrict-editing-of-remote-themes/170051~~
Parece que isso está incorreto :smiley:

2 curtidas

Olá @hlissner, estou trabalhando em uma correção para isso. Uma atualização recente do core quebrou o componente do tema na sua instância. Deverei ter uma correção em breve.

4 curtidas

A correção já foi mesclada no núcleo e seu site foi implantado, @hlissner. Observe que desabilitei dois componentes de tema: o que contém estilos personalizados (que você pode reativar) e o discourse-theme-category-homepage, que precisa ser atualizado na fonte antes que você possa ativá-lo. Mais detalhes sobre isso em Enhanced category-box display component - #7 by pmusaraj

5 curtidas

Obrigado! As folhas de estilo agora carregam corretamente, no entanto, as variáveis de cor do SCSS não parecem herdar o esquema de cores do meu tema. Por exemplo, $secondary retorna seu valor padrão, #ffffff, em vez de #282c34. Será que isso é mais um regression de e8b8272?

2 curtidas

Sim, é outra regressão. A correção é um pouco complicada… e, para a grande maioria das variáveis de cor, os componentes de tema devem usar propriedades CSS personalizadas. Você pode consultar este guia Update themes and plugins to support automatic dark mode para uma visão geral e alguns exemplos sobre como adicionar variações de cores personalizadas em um arquivo especial color_definitions.scss no seu componente de tema.

Me avise como foi!

2 curtidas

Fiz isso onde foi possível, mas sem acesso a essas variáveis, não consigo transformar cores com base no meu esquema ativo. Por exemplo:

$primary-low: dark-light-choose(darken($secondary, 12%), lighten($secondary, 10%));

:root {
    --primary-low: #{$primary-low};
}

Existe uma maneira melhor de contornar isso? Poderia adicionar estilos diretamente a cada tema, mas pretendo ter muitos, e prefiro tratar alguns casos gerais a partir de um componente central e global, sempre que possível.

2 curtidas

Sim, faz sentido. Você tentou adicionar esse SCSS acima em um novo arquivo em common/color_definitions.scss? Deve funcionar normalmente se você o adicionar lá. (Também há uma guia na interface para essa folha de estilo especial.)

2 curtidas

Estava prestes a tentar exatamente isso, quando o Discourse caiu com a mensagem ‘O software que alimenta este fórum de discussão encontrou um problema inesperado’, haha.

1 curtida

Você pode acessar o site via /safe-mode, o que desativa temas e componentes, permitindo que você veja o que aconteceu.

No entanto, isso é mais uma regressão. Esses erros de SCSS não deveriam derrubar todo o site. Com certeza corrigirei isso nos próximos dias.

4 curtidas

Isso funcionou! As variáveis de cor estão configuradas corretamente no escopo de color_definitions.scss. O único problema é que não consigo importar outros arquivos de estilo a partir dele. Por exemplo:

// scss/globals.scss
$foo: "#000000";

// color_definitions.scss
@import "globals";
:root { --foo: #{$foo}; }

Isso resulta no seguinte nos logs de erro do Discourse:

SCSS compilation error: Error: File to import not found or unreadable: globals.scss.
        on line 129 of color_definitions.scss
>> @import "globals";

Posso redesenhar meus arquivos de estilo para evitar a dependência, então não é um grande problema, mas isso poderia ser considerado um bug?

2 curtidas

Sim, já abri um PR para corrigir o problema de importação; deve ser mesclado até amanhã.

3 curtidas

Obrigado pela sua ajuda! O PR foi mesclado, minha instância foi atualizada e consigo importar folhas de estilo em color_definitions.scss, mas esse problema voltou a aparecer:

Desta vez, isso afeta também as variáveis em color_definitions.scss.

1 curtida

É possível fazer o que você está tentando sem herdar as variáveis SCSS do tema pai? Esse é um caso de uso muito específico e eu preferiria não adicionar essa complexidade ao núcleo.

1 curtida

É certamente possível, apenas inconveniente, pois exigirá centenas de linhas de código SCSS repetitivo por tema (e um sistema de build para compartilhar variáveis entre todos eles) que não eram necessários há uma semana. Dito isso, provavelmente seria melhor fazer isso de qualquer maneira, para evitar problemas com futuras refatorações do processo de build do Discourse. Vou fazer isso. Obrigado!

1 curtida

Talvez este guia deva ser revisado ou removido se não for mais suportado.

2 curtidas

Esse guia está um pouco desatualizado, sim. No entanto, o que está causando problemas no seu caso não são variáveis principais, mas sim cores SCSS em um componente que não herda o esquema de cores do tema. (Mesmo assim, vou revisar o guia e atualizá-lo.)

Um pouco de contexto: em agosto/setembro de 2020, migramos para o uso de propriedades personalizadas de CSS para cores. A principal razão para essa mudança foi permitir o suporte a modo escuro automático de forma leve e rápida. Temas têm CSS e JS, então não podem ser alternados rapidamente, mas, usando propriedades personalizadas de CSS, os esquemas de cores podem ser invertidos instantaneamente, sem recarregar a página.

Vejo no seu site que você tem 4 temas, cada um com um esquema de cores, e um componente compartilhado entre os temas para os estilos comuns. Você poderia alcançar essencialmente a mesma coisa com um único tema principal (que conteria todos os estilos compartilhados) e 4 esquemas de cores selecionáveis pelo usuário. Você precisaria mover todos os cálculos de cores no arquivo color_definitions.scss do tema principal, mas é viável. Vou tentar encontrar um tempo e tentar isso amanhã.

Isso seria ideal, mas cheguei à configuração atual porque múltiplos esquemas de cores não funcionaram para mim. Alguns esquemas de cores produzem cores ruins para variáveis geradas automaticamente, como --primary-low. Simplesmente redefinir a variável pode funcionar para um esquema de cores, mas não para outro. Uma solução mais geral é possível se a redefinirmos com base em $primary, ou condicionalmente com base no ID/nome do esquema de cores, mas sem isso, múltiplos temas são necessários, para que eu possa ter um color_definitions.scss por tema (a duplicação que gostaria de evitar). Ou há uma opção melhor que estou perdendo?

Este tópico foi fechado automaticamente após 27 dias. Novas respostas não são mais permitidas.