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.
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.
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)
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.
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
Documentation > Migrating to Discourse
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.