Мы обновляем иконки до Font Awesome 6!

3 сообщения были перенесены в новую тему: Проблемы с новыми иконками Fontawesome 6 в компонентах темы

@awesomerobot Я выполнил инструкции из вашего поста в меру своих (ограниченных) возможностей, но столкнулся с несколькими проблемами, и только одна из них, кажется, связана с изменением иконок Font Awesome. Но давайте разберёмся с этим здесь.

Вот скриншот того, что происходит в консоли:

Сосредоточившись на уведомлении об устаревании, кажется, что иконка “search” вызывает проблему, а новая иконка называется “magnifying-glass”. Поиск по слову “search” в функции поиска инструментов разработчика возвращает (что неудивительно) множество результатов — 6 504 совпадающих строки в 278 файлах, — и я просто не вижу леса за деревьями. Но могу сказать, что результаты, отображаемые в вашем оригинальном посте, пункт 3, здесь абсолютно отсутствуют!

Буду очень признателен за ваши предложения, как найти компонент, вызывающий эту проблему!

Я опубликую сообщение о проблеме с emberjs в отдельном посте позже.

Спасибо — обычно Discourse работает без сучка и задоринки, но в этот раз я в тупике.

2 лайка

Привет, @PatrickF!

Не установлено ли у вас случайно Advanced Search Banner?

Если да, не могли бы вы проверить, актуальна ли версия этого компонента?

Я вижу, что она была обновлена месяц назад:

5 лайков

Да, это не совсем хорошо :sweat_smile:

Если отключить карты исходных кодов для JS и CSS, это поможет сократить количество файлов в результатах. Затем вы сможете искать конкретные результаты только в темах.

4 лайка

Ах, у нас действительно установлен баннер поиска — и он был настроен кем-то некоторое время назад. Я сейчас займусь этим.

Хорошо подмечено, спасибо!

Дополнение:

Хорошо, я вижу, что нам нужна новая строка в <search-icon.gjs>:
@icon="magnifying-glass"

Я загрузил этот файл, экспортировав компонент, но как загрузить файл с изменениями?
(Я не думаю, что это возможно, так как наше сообщество Discourse размещено самим Discourse, верно?)

Я также не вижу кнопки обновления нигде в Discourse — может, мне просто переустановить компонент?

4 лайка

Вы можете установить пользовательские компоненты темы на большинстве планов хостинга.

2 лайка

Спасибо, я уже несколько раз прочитал всю эту документацию.

Я не вижу кнопки «Обновить» нигде, как указано в посте @Arkshine:

Моя панель «Компоненты» выглядит так:

Единственная кнопка на этой странице — «Установить», расположенная ниже. Предположительно, если я переустановлю тему, все наши настройки будут перезаписаны.

Понимаю, что, вероятно, выгляжу немного глупо здесь :joy:, но то, что я вижу в Discourse meta, не совпадает с тем, что я вижу в нашем экземпляре Discourse.

Спасибо за ваше терпение.

2 лайка

Похоже, вы вручную загрузили модифицированную версию оригинального компонента темы.
Если бы установка производилась через ссылку на репозиторий GitHub, вы бы увидели соответствующую кнопку. (Кроме того, автором тогда был бы указан Discourse.)

Да, вам нужно переустановить обновлённый компонент. Для переноса настроек можно использовать кнопку «Редактор настроек» для экспорта и импорта.

Вы помните, какие именно изменения вы внесли? Если речь только о CSS, рекомендую использовать официальную версию, а ваши CSS-настройки добавить в тему или отдельный компонент темы. Так вы всегда сможете получать последние обновления.

5 лайков

@Arkshine, @Moin — спасибо за помощь.

Я удалил существующую тему и переустановил её из репозитория GitHub, и теперь всё в порядке. Сайт выглядит так же, как и раньше, а уведомление о FontAwesome исчезло. Кроме того, тема теперь будет обновляться автоматически.

Ещё раз спасибо!

4 лайка

Discourse обновлён.
Тем не менее, это уведомление продолжает появляться.

Никакие темы или плагины не показывают уведомление об обновлении.
Есть ли что-то ещё, что нужно сделать?

1 лайк

Проверьте логи. Думаю, там показано, какой из иконок или несколько иконок используют старое имя. Если это один из тех, что может быть изменён администратором, то имя этого компонента не отображается.

2 лайка

Спасибо большое, @Jagster.
Я нашёл это сообщение в консоли:

Предупреждение об устаревании: имя иконки "undo" изменено на "arrow-rotate-left". Пожалуйста, используйте новое имя в вашем коде. Старые имена будут удалены во втором квартале 2025 года. [id устаревания: discourse.fontawesome-6-upgrade] [информация: https://meta.discourse.org/t/325349]

Но я не уверен, где именно нужно обновить эту иконку.

1 лайк

Можете ли вы сначала подтвердить, что все ваши плагины/компоненты обновлены до последней версии?

2 лайка

Да, все обновлено.
Обновлено вчера.

2 лайка

В безопасном режиме можно ли определить, проблема в плагине или в компоненте темы?

2 лайка

Я понимаю, что переименования навязываются внешним проектом, который не находится под вашим контролем, но почему нельзя просто оставить совместимые отображения навсегда? Какой вред они наносят?

Понимает ли кто-либо из разработчиков Discourse или его зависимостей концепцию публичного API, который используется другими людьми?

Нельзя нарушать API, если для этого нет действительно веской причины. То, что имена элементов, видимых только разработчикам внутри системы, не являются абсолютно идеальными с точки зрения чьих-то прихотей, не является достаточным основанием для поломки чужого кода.

Я действительно устал от объема работы, необходимого лишь для того, чтобы существующие вещи не ломались при обновлении Discourse. Это было бы приемлемо, если бы каждое такое изменение приносило революционное улучшение, оправдывающее затраченное время и неудобства, но этого никогда не происходит. Создается впечатление, что изменения, нарушающие обратную совместимость, вносятся по мелочам без учета времени и неудобств, которые они причиняют другим людям.

4 лайка

Приносим извинения за доставленные неудобства. Мы стараемся делать эти обновления максимально простыми и предоставляем несколько месяцев на их выполнение, но всегда есть компромисс. Если бы мы хранили переназначения (remappings) бесконечно, у нас уже было бы несколько их слоёв: V4 → V5 → V6, и это создало бы технический долг, требующий отдельного понимания и поддержки. Если бы мы поступали так с каждым фрагментом кода, Discourse стал бы гораздо больше, сложнее для понимания и работы.

Да, именно поэтому мы предоставляем предупреждения об устаревании и инструкции по обновлению. Мы не просто обновляем файл и перекладываем всю работу на других — каждый раз, когда мы делаем подобное обновление, мы должны написать документацию, реализовать системы предупреждений и обновить сотни тем, компонентов тем и плагинов самостоятельно. При обновлениях Ember наши инженеры разработали совершенно новые системы, чтобы сделать возможными устаревшие кастомизации.

Даже гораздо более крупные компании обновляют свои API с нарушением обратной совместимости. Мне пришлось обновлять наш компонент Google Fonts как минимум дважды из-за изменений в API, а Google стоит около двух триллионов долларов. Каждый сервис аутентификации, с которым мы интегрируемся для входа, требовал от нас обновлений из-за изменений в API.

Если у вас нет времени на периодическое обслуживание, мы рекомендуем максимально сократить количество кастомизаций. Если вы используете готовые темы, компоненты или плагины для Discourse, то в большинстве случаев мы будем обновлять их бесплатно.

Вы также можете отказаться от обновления Discourse, но всё постоянно меняется, и в конечном итоге вы столкнётесь с новыми проблемами безопасности или совместимости с браузерами. У каждого варианта есть свои издержки и компромиссы.

10 лайков

И тем не менее программа, написанная для Windows 95, может использоваться без изменений и спустя 30 лет. Значит, это возможно.

Только потому, что другие компании выбирают лёгкий путь, не значит, что вам тоже нужно так делать. Это выбор.

Это выбор, обусловленный работой в реальных условиях, что сопряжено со множеством компромиссов по времени и бюджету. Нам не стоит уходить в сторону рассуждений о том, что «технически возможно всё».

Оставив это в стороне, приятная особенность Discourse заключается в том, что он бесплатен и имеет открытый исходный код — так что, если вы захотите запустить версию 10-летней или даже годичной давности, вы без труда сможете это сделать. Однако, скорее всего, это создаст больше проблем, чем решит.

4 лайка

Спасибо @Arkshine.
Уведомление исчезло автоматически.
Сегодня я снова его обнаружил, проверил консоль браузера, нашел названия иконок и после их обновления уведомление исчезло.

4 лайка