Campo colore testo per categorie mancante dopo l'aggiornamento

Solo una rapida nota per informarvi che stiamo lavorando a una correzione automatica per i siti interessati dalla modifica del colore del testo delle categorie.

Condividerò presto un altro aggiornamento qui non appena avrò maggiori dettagli.

5 Mi Piace

I siti che ospitiamo hanno avuto il colore del testo più contrastante corretto automaticamente.

Per la maggior parte dei siti interessati si è trattato di 2-3 categorie e penso che la maggior parte non se ne accorgerà a meno che non stiano utilizzando il componente tema delle intestazioni di categoria.

Ecco uno script per i siti self-hosted nel caso fosse necessario, può essere eseguito dalla console rails:

START_DATE = DateTime.new(2025, 3, 31)
CATEGORY_TEXT_COLORS = %w[FFFFFF 000000] # NON MODIFICARE
UPDATE_LOG = []

def color_difference(color1, color2)
  r1 = color1[0..1].to_i(16)
  g1 = color1[2..3].to_i(16)
  b1 = color1[4..5].to_i(16)

  r2 = color2[0..1].to_i(16)
  g2 = color2[2..3].to_i(16)
  b2 = color2[4..5].to_i(16)

  r_diff = (r1 - r2).abs
  g_diff = (g1 - g2).abs
  b_diff = (b1 - b2).abs

  r_diff + g_diff + b_diff
end

categories_to_update = {}

Category
  .where("updated_at > ?", START_DATE)
  .find_each do |category|
    text_color = category.text_color.upcase

    # salta se la categoria ha un colore del testo personalizzato o un colore di sfondo formattato male
    next if CATEGORY_TEXT_COLORS.exclude?(text_color) || category.color.size != 6

    white_diff = color_difference(category.color, CATEGORY_TEXT_COLORS[0])
    black_diff = color_difference(category.color, CATEGORY_TEXT_COLORS[1])
    color_index = white_diff > black_diff ? 0 : 1

    if text_color != CATEGORY_TEXT_COLORS[color_index]
      categories_to_update[category.id] = { text_color: CATEGORY_TEXT_COLORS[color_index] }
    end
  end

# aggiorna le categorie con il nuovo colore del testo
Category
  .where(id: categories_to_update.keys)
  .find_each do |category|
    change = categories_to_update[category.id]
    next unless change

    UPDATE_LOG << "Aggiornato il colore del testo di #{category.url} da ##{category.text_color} a ##{change[:text_color]}"
    category.update_columns(text_color: change[:text_color])
  end

  puts "Aggiornate #{categories_to_update.size} categorie\n---"
  puts UPDATE_LOG.join("\n")

Quindi ora è sicuro che se controllo manualmente le mie categorie e riaggiusto i colori, non li cambierai nelle prossime settimane? Ho controllato tutte le mie categorie circa 3 settimane fa e ora alcuni banner di categoria sono di nuovo difficili da leggere, quindi questa volta voglio assicurarmi che tutto non venga modificato di nuovo dopo pochi giorni.

Soprattutto in combinazione con le tonalità di rosso, trovo il nero applicato automaticamente piuttosto difficile da leggere




Le tonalità turchesi sono state spesso dotate di un colore del carattere chiaro.

Anche il risultato per le tonalità di grigio non è sempre appropriato. Qui su meta, ad esempio, Dev > Translations è scritto in nero ma Site feedback in bianco. (So che il colore non è lo stesso, ma molto simile)


2 Mi Piace

Sì, è sicuro modificare manualmente questi a proprio piacimento.

Al momento non abbiamo in programma di modificare ulteriormente i colori. Ci saranno sicuramente alcuni casi in cui sia il testo bianco che quello nero saranno leggibili, questo è da prevedere con determinati intervalli di colori.

2 Mi Piace

Questa è certamente una questione di gusti, anche se sono sorpreso da alcuni dei risultati quando controllo l’accessibilità con Web Accessibility Color Contrast Checker - Conform to WCAG

Community wiki



Documentation > Migrating to Discourse


2 Mi Piace

La sorpresa più grande di questi è la categoria wiki della community, il testo bianco è molto più facile da leggere per me (quindi la scelta automatica sembra corretta) ma il controllore di contrasto suggerisce che il testo nero sia migliore. Probabilmente c’è un certo livello di gusto/preferenza qui, come hai suggerito.

La parte difficile è che stiamo guardando specificamente al contrasto, mentre penso che anche la luminosità del colore influenzi ciò che sembra più facile da leggere.

In generale, penso che questo funzioni abbastanza bene per la maggior parte degli intervalli di colori. Ad esempio, se scegli un colore scuro, suggerirà testo bianco, per i colori chiari suggerirà testo nero. Ci sono alcuni colori intermedi che potrebbero andare in entrambi i modi e in quei casi l’utente può scegliere ciò che sembra giusto dalla pagina della categoria di modifica.

3 Mi Piace